2 #include "hdsim_3d.hpp" 25 const vector<ComputationalCell>& cells,
31 tess_(tess), eos_(eos), cells_(cells),
33 pm_(pm), tsc_(tsc), fc_(fc), cu_(cu), pt_()
40 class PointVelocitiesCalculator:
public LazyList<Vector3D>
46 pm_(pm), tess_(tess) {}
48 size_t size(
void)
const 50 return tess_.GetPointNo();
55 return pm_(tess_.GetMeshPoint(i));
63 void update_extensive(
const vector<Conserved3D>& fluxes,
66 vector<Conserved3D>& extensive)
78 class AllCellsUpdater:
public LazyList<ComputationalCell>
83 const vector<Conserved3D>& extensive,
86 tess_(tess), extensive_(extensive), eos_(eos), cu_(cu) {}
88 size_t size(
void)
const 90 return extensive_.size();
95 return cu_(extensive_[i]/tess_.GetVolume(i),eos_);
100 const vector<Conserved3D>& extensive_;
105 class PointPositionUpdater:
public LazyList<Vector3D>
110 const vector<Vector3D>& velocities,
112 tess_(tess), velocities_(velocities), dt_(dt) {}
114 size_t size(
void)
const 116 return velocities_.size();
121 return tess_.GetMeshPoint(i)+dt_*velocities_[i];
126 const vector<Vector3D>& velocities_;
133 const double dt = tsc_(tess_,cells_,eos_);
134 const vector<Vector3D> point_velocities =
136 update_extensive(fc_(tess_,cells_,eos_,point_velocities),
137 dt,tess_,extensive_);
const vector< ComputationalCell > & getCells(void) const
Access to computational cells.
void timeAdvance()
Advances the simulation in time (first order)
std::pair< size_t, size_t > neighbors
Neighboring cells.
Abstract class for time step calculator.
Abstract class for tessellation in 3D.
Abstract class for flux calculator.
Abstract class for point motion.
virtual bool IsGhostPoint(size_t index) const =0
Checks if a point is a ghost point or not.
vector< T > serial_generate(const LazyList< T > &ll)
Creates a vector from an LazyList.
Container for the hydrodynamic variables.
double getCycle(void) const
Returns the number of times time advance was called.
HDSim3D(Tessellation3D &tess, const vector< ComputationalCell > &cells, const EquationOfState &eos, const PointMotion3D &pm, const TimeStepCalculator &tsc, const FluxCalculator3D &fc, const CellUpdater3D &cu)
Class constructor.
double getTime(void) const
Returns the current time of the simulation.
Generates a list of conserved variables.
void update(double dt)
Update the progress tracker.
Ordered list whose terms are evaluated lazily.
ProgressTracker(void)
Class constructor.
Base class for equation of state.
virtual Face const & GetFace(size_t index) const =0
Returns Face (interface between cells)
virtual size_t GetPointNo(void) const =0
Get Total number of mesh generating points.
double GetArea(void) const
Returns the area of the face.
Abstract clas for cell update scheme.
virtual size_t GetTotalFacesNumber(void) const =0
Returns the total number of faces.
Conserved variables for a 3D computational cell.
const Tessellation3D & getTesselation(void) const
Access to tessellation.
Generates extensive conserved variables.