forked from hezihertz/PachydermAcoustic_Rhinoceros
/
Classes_Simulation_Type.cs
66 lines (60 loc) · 2.36 KB
/
Classes_Simulation_Type.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//'Pachyderm-Acoustic: Geometrical Acoustics for Rhinoceros (GPL) by Arthur van der Harten
//'
//'This file is part of Pachyderm-Acoustic.
//'
//'Copyright (c) 2008-2015, Arthur van der Harten
//'Pachyderm-Acoustic is free software; you can redistribute it and/or modify
//'it under the terms of the GNU General Public License as published
//'by the Free Software Foundation; either version 3 of the License, or
//'(at your option) any later version.
//'Pachyderm-Acoustic is distributed in the hope that it will be useful,
//'but WITHOUT ANY WARRANTY; without even the implied warranty of
//'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//'GNU General Public License for more details.
//'
//'You should have received a copy of the GNU General Public
//'License along with Pachyderm-Acoustic; if not, write to the Free Software
//'Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
using System;
namespace Pachyderm_Acoustic
{
/// <summary>
/// The simulation type base class. All simulations will inherit this class in order to be passed to the Pach_Runsim_Command.
/// </summary>
public abstract class Simulation_Type
{
public abstract string Sim_Type();
public abstract void Begin();
public abstract string ProgressMsg();
public abstract System.Threading.ThreadState ThreadState();
public abstract void Combine_ThreadLocal_Results();
public abstract void Abort_Calculation();
}
/// <summary>
/// a general purpose structure which holds threadlocal parameters, in order to efficiently divide the work among threads.
/// </summary>
public struct Calc_Params
{
public Environment.Scene Room;
public int StartIndex;
public int EndIndex;
public int ThreadID;
public int RandomSeed;
public Calc_Params(int Start_In, int End_In, int Thread_In, int Random_In)
{
Room = null;
StartIndex = Start_In;
EndIndex = End_In;
ThreadID = Thread_In;
RandomSeed = Random_In;
}
public Calc_Params(Environment.Scene Rm, int Start_In, int End_In, int Thread_In, int Random_In)
{
Room = Rm;
StartIndex = Start_In;
EndIndex = End_In;
ThreadID = Thread_In;
RandomSeed = Random_In;
}
}
}