1 #ifndef __INFOSTRUCT_INFOSTRUCT_H__
2 #define __INFOSTRUCT_INFOSTRUCT_H__
4 #include "../Constants/AtomicProperties.h"
5 #include "../Constants/Constants.h"
6 #include "rapidjson/document.h"
7 #include "rapidjson/filestream.h"
8 #include "rapidjson/prettywriter.h"
15 namespace MDSimulation
43 std::vector<double> AtomicParts;
48 double ConeSolidAngle;
51 double DriverPressure;
52 double AmbientPressure;
54 double AdiabaticRadius;
56 double IsothermalRadius;
59 double InitialVelocity;
60 double WallTemperature;
61 double EquilibriumPressure;
65 double LiquidSpeedOfSound;
66 double LiquidViscosity;
67 double LiquidSurfaceTension;
71 double AtomicDiameter[ET];
72 double AtomicDiameterSquared[ET][ET];
74 double AtomicMass[ET];
75 double ReducedMass[ET][ET];
77 double VWallThermal[ET];
79 double BirdConstant[ET];
83 double CollisionThreshold;
129 void Read(
const rapidjson::Value& reader);
133 template <
typename Writer>
134 void Serialize(Writer& writer)
const;
148 void CopyConstants();
151 template <
typename Writer>
152 void InfoStruct::Serialize(Writer& writer)
const
157 writer.StartObject();
159 writer.String(
"Environment");
160 writer.StartObject();
163 writer.String(
"ConeAngle") , writer.Double(ConeAngle);
164 writer.String(
"Temperature") , writer.Double(Temperature);
165 writer.String(
"WallTemp") , writer.Double(WallTemperature);
166 writer.String(
"AmbientRadius") , writer.Double(AmbientRadius);
167 writer.String(
"DriverPressure") , writer.Double(DriverPressure);
168 writer.String(
"Frequency") , writer.Double(Frequency);
169 writer.String(
"InitialTime") , writer.Double(InitialTime);
170 writer.String(
"InitialRadius") , writer.Double(InitialRadius);
171 writer.String(
"InitialVelocity") , writer.Double(InitialVelocity);
172 writer.String(
"EquilibriumPressure") , writer.Double(EquilibriumPressure);
173 writer.String(
"AmbientPressure") , writer.Double(AmbientPressure);
174 writer.String(
"AdiabaticRadius") , writer.Double(AdiabaticRadius);
175 writer.String(
"IsothermalRadius") , writer.Double(IsothermalRadius);
176 if( Driver == Constant ){
177 writer.String(
"DriverMode") , writer.String(
"constant");
179 writer.String(
"DriverMode") , writer.String(
"sinusoidal");
181 writer.String(
"Liquid") , writer.String(liquidName);
184 writer.String(
"Particles");
185 writer.StartObject();
186 writer.String(
"AtomicParts");
187 writer.StartObject();
190 const char *elemName;
191 for(i = 0; i < AtomicParts.size(); i++){
192 val = AtomicParts.at(i);
195 writer.String(elemName), writer.Double(val);
const std::string LIQUID_NAMES[LIQUID_TYPES]
Names of the possible liquids in the simulation.
Definition: Constants.h:84
InfoStruct()
Empty constructor simply initializes the values to zero.
Definition: InfoStruct.cpp:45
InfoStruct ToSimulationUnits() const
Converts the current InfoStruct to simulation units.
Definition: InfoStruct.cpp:77
static InfoStruct ParseInfoStruct(const std::string &fname)
Parser function to read in a JSON formatted text file and convert it to an InfoStruct.
Definition: InfoStruct.cpp:160
DriverMode
Possible driver modes for use in the RPK equation.
Definition: InfoStruct.h:21
friend std::ostream & operator<<(std::ostream &stream, const InfoStruct &matrix)
Make this easier to output.
Definition: InfoStruct.cpp:333
static InfoStruct DefaultInfoStruct()
Returns an InfoStruct with default values.
Definition: InfoStruct.cpp:257
const int ELEMENT_TYPES
The number of different particle types in the simulation.
Definition: AtomicProperties.h:22
Defines the structure used to hold the configurable constants of the simulation.
Definition: InfoStruct.h:36
const std::string ELEMENT_NAMES[ELEMENT_TYPES]
The names of the elements.
Definition: AtomicProperties.h:28