11 {
16 );
17
18 std::unique_ptr<SurfaceDetector::Interface> surfaceDetector;
21 refValuesForNumberDensity.n0,
25 ));
26 } else {
29 refValuesForNumberDensity.n0
30 ));
31 }
32
36 );
37
38 std::unique_ptr<PressureCalculator::Interface> pressureCalculator;
49 ));
56 ));
57 } else {
59 std::cerr << "Please select either Implicit or Explicit." << std::endl;
60 std::exit(-1);
61 }
62
63 return MPS(input, std::move(pressureCalculator), std::move(surfaceDetector));
64}
Dirichlet Boundary Condition Generator that sets the free surface pressure to 0.
Class for explicit pressure calculation.
Class for implicit pressure calculation.
Struct for reference values of MPS method.
Detects free surface based on number density and assists evaluation by particle distribution.
Detects free surface based on the number density.
double soundSpeed
Speed of sound for Explicit method.
double compressibility
Compressibility of the fluid for Implicit method.
double particleDistance
Initial distance between particles.
int dim
Dimension of the simulation.
double relaxationCoefficientForPressure
Relaxation coefficient for pressure for Implicit method.
double re_forNumberDensity
Effective radius for number density.
bool surfaceDetection_particleDistribution
flag for free surface detection based on particle distribution
std::string pressureCalculationMethod
Method for pressure calculation.
double surfaceDetection_particleDistribution_threshold
double surfaceDetection_numberDensity_threshold
threshold ratio of number density for free surface detection
double re_forLaplacian
Effective radius for Laplacian.