I will update this post with what I understand of the IBSimu library structure.
Here is the class diagram so far [PDF][[TEX]]:
IBSimu Partial Class Diagram (as of 13/08/2020)
The EpotField class inherits from the following classes:
- Mesh: has no Geometry
- geom_mode_e _geom_mode (2D, 3D, Cyl)
- Int3D _size
- Vec3D _origo
- Vec3D _max
- double _h – length of mesh step
- double _div_h (reciprocal of _h)
- default implicit copy constructor
- save( std::ostream &os)
- ScalarField: public Field, almost empty
- Geometry: public Mesh
- MeshScalarField : public ScalarField, public Mesh
- double *_F (field data)
- MeshScalarField(const Mesh &m) -> Mesh(m) and allocate memory for _F
- DOES NOT store a pointer to Geometry
- EpotField: public MeshScalarField
- Geometry *_geom
- overload operator() for returning linear interpolation
- DOES store a pointer to Geometry
- does nothing more
EpotEfield is given by:
- Field
- abstract base class, does nothing
- VectorField: public Field
- Vect3D operator()(Vec3D &x)
- does nothing more
- EpotEfield: public VectorField
- const EpotField &_epot
- const Geometry *_geom
- double *_F[3]