METHOD
Model Class Referenceabstract

#include <model.h>

Inheritance diagram for Model:
Collaboration diagram for Model:

Public Member Functions

 Model ()
 
 Model (Data *data)
 
virtual ~Model ()
 
virtual void sourceTermSingleCell (double *cons, double *prims, double *aux, double *source, int i=-1, int j=-1, int k=-1)=0
 
virtual void sourceTerm (double *cons, double *prims, double *aux, double *source)=0
 
virtual void getPrimitiveVarsSingleCell (double *cons, double *prims, double *aux, int i=-1, int j=-1, int k=-1)=0
 
virtual void getPrimitiveVars (double *cons, double *prims, double *aux)=0
 
virtual void primsToAll (double *cons, double *prims, double *aux)=0
 
virtual void fluxVector (double *cons, double *prims, double *aux, double *f, int dir)=0
 
virtual void finalise (double *cons, double *prims, double *aux)
 

Public Attributes

Datadata
 
int Ncons
 
int Nprims
 
int Naux
 

Detailed Description

Physics model that we want to use

We're using an abstract base class to form the foundations of the models preparing for additional set ups. Systems will derive from Model and supply their own primitive recoveries for cons2prims, prims2cons functions and the flux vectors. Constructors must require access to public Simulation data.

Definition at line 15 of file model.h.

Constructor & Destructor Documentation

◆ Model() [1/2]

Model::Model ( )
inline

Default constructor.

Definition at line 26 of file model.h.

◆ Model() [2/2]

Model::Model ( Data data)
inline

Parameterized constructor.

Stores a pointer to the Data class for reference in its methods

Parameters
[in]*datapointer to Data class containing global simulation data

Definition at line 34 of file model.h.

◆ ~Model()

virtual Model::~Model ( )
inlinevirtual

Destructor.

Definition at line 36 of file model.h.

Member Function Documentation

◆ finalise()

virtual void Model::finalise ( double *  cons,
double *  prims,
double *  aux 
)
inlinevirtual

Finalise the simulation variables.

Mostly, this probably wont be needed, but if there is any final steps to finish off a timestep, this can be done here.
Parameters
[in]*conspointer to conserved vector work array. Size is \(N_{cons} \times N_x \times N_y \times N_z\)
[in]*primspointer to primitive vector work array. Size is \(N_{prims} \times N_x \times N_y \times N_z\)
[in]*auxpointer to auxiliary vector work array. Size is \(N_{aux} \times N_x \times N_y \times N_z\)

Reimplemented in Hybrid, SRMHD, TwoFluidEMHD, SRRMHD, and Euler.

Definition at line 133 of file model.h.

◆ fluxVector()

virtual void Model::fluxVector ( double *  cons,
double *  prims,
double *  aux,
double *  f,
int  dir 
)
pure virtual

Flux vector.

Generates the values of the flux vector at the cell centre. dir corresponds to the direction in which we want the flux: 0=x-direction, 1=y-direction, 2=z-direction.

Parameters
[in]*conspointer to conserved vector work array. Size is \(N_{cons} \times N_x \times N_y \times N_z\)
[in]*primspointer to primitive vector work array. Size is \(N_{prims} \times N_x \times N_y \times N_z\)
[in]*auxpointer to auxiliary vector work array. Size is \(N_{aux} \times N_x \times N_y \times N_z\)
[out]*fpointer to flux vector work array. Size is \(N_{cons} \times N_x \times N_y \times N_z\)
dirdirection in which to generate flux vector. (x, y, z) = (0, 1, 2)

Implemented in Hybrid, SRMHD, TwoFluidEMHD, SRRMHD, and Euler.

◆ getPrimitiveVars()

virtual void Model::getPrimitiveVars ( double *  cons,
double *  prims,
double *  aux 
)
pure virtual

Spectral analysis.

Determines the values of the primitive and auxiliary vectors given some conserved vector, for use in the source and flux contributions to the conserved vector.

Parameters
[in]*conspointer to conserved vector work array. Size is \(N_{cons} \times N_x \times N_y \times N_z\)
[in,out]*primspointer to primitive vector work array. Size is \(N_{prims} \times N_x \times N_y \times N_z\)
[in,out]*auxpointer to auxiliary vector work array. Size is \(N_{aux} \times N_x \times N_y \times N_z\)

Implemented in Hybrid, SRMHD, TwoFluidEMHD, SRRMHD, and Euler.

◆ getPrimitiveVarsSingleCell()

virtual void Model::getPrimitiveVarsSingleCell ( double *  cons,
double *  prims,
double *  aux,
int  i = -1,
int  j = -1,
int  k = -1 
)
pure virtual

Single cell cons2prims conversion.

For the same reason as outlined in sourceTermSingleCell, some models will require a single celled primitive conversion method. Each of the arguments are only for a single cell, ie, cons points to an (Ncons,) array, etc.

Parameters
[in]*conspointer to conserved vector work array. Size is \(N_{cons}\)
[in,out]*primspointer to primitive vector work array. Size is \(N_{prims}\)
[in,out]*auxpointer to auxiliary vector work array. Size is \(N_{aux}\)
ioptional cell number in x-direction
joptional cell number in y-direction
koptional cell number in z-direction
See also
getPrimitiveVars

Implemented in Hybrid, SRMHD, TwoFluidEMHD, SRRMHD, and Euler.

◆ primsToAll()

virtual void Model::primsToAll ( double *  cons,
double *  prims,
double *  aux 
)
pure virtual

Primitive-to-all transformation.

Generates conserved and auxiliary vector from primitive vector, reqiored to get simulation started—initial data is given in primitive form.

Parameters
[out]*conspointer to conserved vector work array. Size is \(N_{cons} \times N_x \times N_y \times N_z\)
[in]*primspointer to primitive vector work array. Size is \(N_{prims} \times N_x \times N_y \times N_z\)
[out]*auxpointer to auxiliary vector work array. Size is \(N_{aux} \times N_x \times N_y \times N_z\)

Implemented in Hybrid, SRMHD, TwoFluidEMHD, SRRMHD, and Euler.

◆ sourceTerm()

virtual void Model::sourceTerm ( double *  cons,
double *  prims,
double *  aux,
double *  source 
)
pure virtual

Source term contribution.

Generates the source term contribution to the values of the conserved variables required for the time integrator.

Parameters
[in]*conspointer to conserved vector work array. Size is \(N_{cons} \times N_x \times N_y \times N_z\)
[in]*primspointer to primitive vector work array. Size is \(N_{prims} \times N_x \times N_y \times N_z\)
[in]*auxpointer to auxiliary vector work array. Size is \(N_{aux} \times N_x \times N_y \times N_z\)
[out]*sourcepointer to source vector work array. Size is \(N_{cons} \times N_x \times N_y \times N_z\)
See also
sourceTermSingleCell

Implemented in Hybrid, SRMHD, TwoFluidEMHD, SRRMHD, and Euler.

◆ sourceTermSingleCell()

virtual void Model::sourceTermSingleCell ( double *  cons,
double *  prims,
double *  aux,
double *  source,
int  i = -1,
int  j = -1,
int  k = -1 
)
pure virtual

Single cell source term contribution.

Models that can posess a stiff source term and hence (semi-)implicit time integrators will require a source contribution (and cons2prims method) that applies to a single cell. Each of the arguments are only for a single cell, ie, cons points to an (Ncons,) array, etc.

Parameters
[in]*conspointer to conserved vector work array. Size is \(N_{cons}\)
[in]*primspointer to primitive vector work array. Size is \(N_{prims}\)
[in]*auxpointer to auxiliary vector work array. Size is \(N_{aux}\)
[out]*sourcepointer to source vector work array. Size is \(N_{cons}\)
ioptional cell number in x-direction
joptional cell number in y-direction
koptional cell number in z-direction
See also
sourceTerm

Implemented in Hybrid, SRMHD, TwoFluidEMHD, SRRMHD, and Euler.

Member Data Documentation

◆ data

Data* Model::data

Pointer to Data class containing global simulation data.

Definition at line 19 of file model.h.

◆ Naux

int Model::Naux

Size of specified vector.

Definition at line 23 of file model.h.

◆ Ncons

int Model::Ncons

Size of specified vector.

Definition at line 23 of file model.h.

◆ Nprims

int Model::Nprims

Size of specified vector.

Definition at line 23 of file model.h.


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