METHOD
hybrid.h
Go to the documentation of this file.
1 #ifndef HYBRID_H
2 #define HYBRID_H
3 
4 #include "model.h"
5 #include "srrmhd.h"
6 #include "srmhd.h"
7 #include "REGIME.h"
8 #include "flux.h"
9 
11 
37 class Hybrid : public Model
38 {
39 
40  public:
41 
42  double
43  *icons, *iprims, *iaux, // Ideal cons, prims and aux. Size is \f$N_{var}*N_x*N_y*N_z\f$.
44  *sicons, *siprims, *siaux, // Ideal cons, prims and aux. Size is \f$N_{var}\f$.
45  *iflux, *rflux, // Flux vectors for ideal, resistive and REGIME. Size is \f$N_{cons}*N_x*N_y*N_z\f$.
46  *isource, *rsource, *regimeSource, // Source vectors for ideal, resistive and REGIME. Size is \f$N_{cons}*N_x*N_y*N_z\f$.
47  sigmaCrossOver, // Centre conductivity of penalty function
48  sigmaSpan; // Span of conductivity of penalty function
49 
50  bool useREGIME; // Should we use REGIME? (Default to true)
51 
52 
53 
54  SRRMHD * resistiveModel; // Pointer to SRRMHD model
55 
56  SRMHD * idealModel; // Pointer to SRMHD model
57 
58  REGIME * subgridModel = NULL; // Pointer to REGIME model
59 
60  int *mask; // Flag: can we set REGIME source?
61 
62  Hybrid();
63 
64 
66 
76  Hybrid(Data * data, double sigmaCrossOver=150, double sigmaSpan=50, bool useREGIME=true);
77 
78 
79  virtual ~Hybrid();
80 
82 
89  void setupREGIME(FluxMethod * fluxMethod);
90 
91  private:
93 
103  double idealWeight(double * cons, double * prims, double * aux);
104 
106 
120  double idealWeightID(double * cons, double * prims, double * aux, int i, int j, int k);
121 
123 
133  bool useResistive(double * cons, double * prims, double * aux);
134 
136 
149  void setIdealCPAs(double *cons, double * prims, double * aux);
150 
152 
165  void setIdealCPAsAll(double *cons, double * prims, double * aux);
166 
168 
178  void setMasks(double * cons, double * prims, double * aux);
179 
180  public:
182 
198  void sourceTermSingleCell(double *cons, double *prims, double *aux, double *source, int i=-1, int j=-1, int k=-1);
199 
201 
214  void sourceTerm(double *cons, double *prims, double *aux, double *source);
215 
217 
233  void getPrimitiveVarsSingleCell(double *cons, double *prims, double *aux, int i=-1, int j=-1, int k=-1);
234 
236 
249  void getPrimitiveVars(double *cons, double *prims, double *aux);
250 
252 
264  void primsToAll(double *cons, double *prims, double *aux);
265 
267 
281  void fluxVector(double *cons, double *prims, double *aux, double *f, const int dir);
282 
284 
293  void finalise(double *cons, double *prims, double *aux);
294 };
295 
296 #endif
double sigmaCrossOver
Definition: hybrid.h:43
double * iaux
Definition: hybrid.h:43
double sigmaSpan
Definition: hybrid.h:43
void fluxVector(double *cons, double *prims, double *aux, double *f, const int dir)
Flux vector.
void setMasks(double *cons, double *prims, double *aux)
Set the REGIME source mask.
double * rflux
Definition: hybrid.h:43
Hybrid()
Default constructor.
Special Relativistic MagnetHydroDynamics
Definition: srmhd.h:93
bool useREGIME
Definition: hybrid.h:50
double idealWeight(double *cons, double *prims, double *aux)
Penalty function: ideal contribution.
double * siprims
Definition: hybrid.h:43
double * iprims
Definition: hybrid.h:43
Special Relativistic Resistive MagnetHydroDynamics
Definition: srrmhd.h:77
REGIME: Resistive extension upgrade for ideal MHD
Definition: REGIME.h:81
double * icons
Definition: hybrid.h:43
Hybrid model
Definition: hybrid.h:37
virtual ~Hybrid()
Destructor.
void getPrimitiveVarsSingleCell(double *cons, double *prims, double *aux, int i=-1, int j=-1, int k=-1)
Single cell conservative to primitive transformation.
SRRMHD * resistiveModel
Definition: hybrid.h:54
double * rsource
Definition: hybrid.h:43
void setupREGIME(FluxMethod *fluxMethod)
Setup the REGIME model.
void setIdealCPAsAll(double *cons, double *prims, double *aux)
Set ideal cons, prims and aux vectors for all cells.
void sourceTermSingleCell(double *cons, double *prims, double *aux, double *source, int i=-1, int j=-1, int k=-1)
Single cell source term contribution.
double * sicons
Definition: hybrid.h:43
double idealWeightID(double *cons, double *prims, double *aux, int i, int j, int k)
Penalty function: ideal contribution.
double * siaux
Definition: hybrid.h:43
double * regimeSource
Definition: hybrid.h:43
SRMHD * idealModel
Definition: hybrid.h:56
void primsToAll(double *cons, double *prims, double *aux)
Primitive-to-all transformation.
double * iflux
Definition: hybrid.h:43
Physics model that we want to use
Definition: model.h:15
void sourceTerm(double *cons, double *prims, double *aux, double *source)
Source term contribution.
int * mask
Definition: hybrid.h:60
bool useResistive(double *cons, double *prims, double *aux)
Use resistive C2P?
Data * data
Pointer to Data class containing global simulation data.
Definition: model.h:19
double * isource
Definition: hybrid.h:43
REGIME * subgridModel
Definition: hybrid.h:58
Abstract base class for flux reconstruction methods
Definition: flux.h:17
void getPrimitiveVars(double *cons, double *prims, double *aux)
Conservative to primitive transformation for all cells.
Data object
Definition: simData.h:49
void finalise(double *cons, double *prims, double *aux)
Finalise the simulation variables.
void setIdealCPAs(double *cons, double *prims, double *aux)
Set ideal cons, prims and aux vectors for a single cell.