MPS-Basic
Loading...
Searching...
No Matches
PressureCalculator::Explicit Class Reference

Class for explicit pressure calculation. More...

#include <explicit.hpp>

Inheritance diagram for PressureCalculator::Explicit:
Collaboration diagram for PressureCalculator::Explicit:

Public Member Functions

std::vector< double > calc (Particles &particles) override
 calculate pressure
 
 ~Explicit () override
 
 Explicit (double n0, double soundSpeed, int dimension, double particleDistance)
 
- Public Member Functions inherited from PressureCalculator::Interface
virtual ~Interface ()
 destructor
 

Private Attributes

double n0
 
double soundSpeed
 

Detailed Description

Class for explicit pressure calculation.

This class calculates pressure explicitly.

Definition at line 14 of file explicit.hpp.

Constructor & Destructor Documentation

◆ ~Explicit()

Explicit::~Explicit ( )
override

Definition at line 10 of file explicit.cpp.

10 {
11}

◆ Explicit()

Explicit::Explicit ( double n0,
double soundSpeed,
int dimension,
double particleDistance )

Definition at line 5 of file explicit.cpp.

5 {
7 this->n0 = n0;
8}

Member Function Documentation

◆ calc()

std::vector< double > Explicit::calc ( Particles & particles)
overridevirtual

calculate pressure

Parameters
particlesparticles

Implements PressureCalculator::Interface.

Definition at line 13 of file explicit.cpp.

13 {
14 std::vector<double> pressure;
15 pressure.resize(particles.size());
16
17#pragma omp parallel for
18 for (const auto& pi : particles) {
19 if (pi.type == ParticleType::Ghost || pi.type == ParticleType::DummyWall) {
20 pressure[pi.id] = 0;
21 } else {
22 auto ni = pi.numberDensity;
23 auto c = this->soundSpeed;
24 auto rho = pi.density;
25
26 if (ni > n0) {
27 pressure[pi.id] = c * c * rho * (ni - n0) / n0;
28 } else {
29 pressure[pi.id] = 0;
30 }
31 }
32 }
33
34 return pressure;
35}
int size() const
Get the number of particles.
Definition particles.cpp:22
@ Ghost
Ghost particle (outside of the domain, not used for calculation)
@ DummyWall
Dummy wall particle (pressure is not calculated)
Here is the call graph for this function:

Member Data Documentation

◆ n0

double PressureCalculator::Explicit::n0
private

Definition at line 26 of file explicit.hpp.

◆ soundSpeed

double PressureCalculator::Explicit::soundSpeed
private

Definition at line 27 of file explicit.hpp.


The documentation for this class was generated from the following files: