ChemicalFemPhysics
The GeMA Standard Chemical FEM Physics Plugin
Loading...
Searching...
No Matches
GmpNeuralNetworkReaction Class Reference

Extends the basic chemical physics transport equation by providing reaction rates based on the Iphreeqc package. More...

#include <gmpNeuralNetworkReaction.h>

Inheritance diagram for GmpNeuralNetworkReaction:
Collaboration diagram for GmpNeuralNetworkReaction:

Public Member Functions

 GmpNeuralNetworkReaction (GmSimulationData *simulation, QString id, QString description, const GmLogCategory &logger)
 
virtual ~GmpNeuralNetworkReaction ()
 Destructor.
 
virtual const char * pluginType () const
 
virtual const QVariantMap * physicsMetaDataMap ()
 Returns a pointer to the basic chemical physics attribute map, built when the function is called for the first time. Will be extended by sub-classes providing the reactive term.
 
virtual bool checkLoadedData ()
 Checks the existance of the velocity accessor, and also sizes for the dispersion and retardation coefficients, as well as sizes for the prescribed concentration and prescribed flux boundary conditions.
 
virtual bool beforeElementStiffnessLoop (const GmpFemMatrixSet &elemMatrices, const GmpFemVectorSet &elemVectors)
 
virtual bool saveIPhreeqcValuesToMeshIC (IPhreeqc &R, int node)
 
virtual void runfile (IPhreeqc &R)
 
virtual void SetOutputFile (IPhreeqc &R)
 
virtual GmVector fillSolutionParameters (GmCellAccessor *ac, const GmElement *e, const GmVector *coord, int ip) const
 
virtual GmMatrix fillEquilibriumParameters (GmCellAccessor *ac, const GmElement *e, const GmVector *coord, int ip) const
 
virtual bool calcDerivedResults (bool nonLinearSolver)
 Calc velocity and flow on nodes and/or Gauss points.
 
virtual bool runNeuralNetwork ()
 
virtual bool runInitIphreeqcNodes ()
 
virtual void getReactionValues (const GmElement *e, const GmVector &Rg, GmVector &Re, int pos) const
 
virtual void FillElementalReaction (const GmElement *e, GmVector &elemFe, const GmVector &Fr, int pos) const
 
- Public Member Functions inherited from GmpChemicalFemPhysics
 GmpChemicalFemPhysics (GmSimulationData *simulation, QString id, QString description, const GmLogCategory &logger)
 Constructor. Will be called by the plugin loading code.
 
virtual ~GmpChemicalFemPhysics ()
 Destructor.
 
virtual const char * pluginName () const
 
virtual FemResultType fillElementData (const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
 Fills the element stiffness matrix for element 'e' with diffusive and convective terms. Calls the virtual function reactionRate() for filling the external forces().
 
virtual FemResultType fillElementDataForBc (const GmElement *e, const GmBoundaryCondition *bc, int bcIndex, int bcListIndex, int border, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
 Fills the element force vector elemF for element 'e', taking into account fixed flux boundary conditions.
 
virtual bool fixedNodalDofsBc (QVector< int > &nodes, QVector< int > &dof, QVector< double > &values, bool *constantValues) const
 See comments on base class. Fills vectors with prescribed node concentrations

 
virtual bool fillFixedNodalDofsBCAlkalinity (QVector< int > &nodes, QVector< int > &dof, QVector< double > &values, bool *constantValues) const
 See comments on base class. Fills vectors with prescribed node concentrations.
 
virtual bool fillFixedNodalDofsBCbasalt (QVector< int > &nodes, QVector< int > &dof, QVector< double > &values, bool *constantValues) const
 

Protected Types

enum  ANNPhysicsAttributeIds {
  IPHREEQC_DATABASE_ID = GmpChemicalFemPhysics::NUM_ATTRIBUTE_IDS , REACTION_TYPE_ID , RUNFILENAMW_ID , SRc_A_ID ,
  SRd_A_ID , POROS_A_ID , NUM_ATTRIBUTE_IDS
}
 Additional IDs for physics attributes. More...
 
enum  ANNNodeAttributeIds {
  IonSol_NA_ID = GmpChemicalFemPhysics::NUM_NA_IDS , IonSolOld_NA_ID , SIndex_NA_ID , SIndexOld_NA_ID ,
  PH_NA_ID , PHOld_NA_ID , EqRxn_NA_ID , EqRxnOld_NA_ID ,
  Mineral_NA_ID , MineralOld_NA_ID , poroM_NA_ID , poroMOld_NA_ID ,
  Ctrate_NA_ID , CtrateOld_NA_ID , NUM_NA_IDS
}
 IDs for physics node attributes. More...
 
enum  ANNGaussAttributeIds { MASS_GA_ID = GmpChemicalFemPhysics::NUM_GA_IDS , NUM_GA_IDS }
 
- Protected Types inherited from GmpChemicalFemPhysics
enum  PhysicsAttributeIds {
  ISOPARAMETRIC_ID , MULTI_DISPERSION_ID , MULTI_RETARDATION_ID , ALKALINITY_ID ,
  BASALTRXN_ID , NUM_ATTRIBUTE_IDS
}
 IDs for physics attributes. More...
 
enum  StateVarIds { C_ID }
 IDs fo physics state vars. More...
 
enum  NodeAttributeIds { NUM_NA_IDS }
 IDs for physics node attributes. More...
 
enum  GaussAttributeIds { V_GA_ID , NUM_GA_IDS }
 IDs for physics Gauss attributes. More...
 
enum  ElementPropertyIds {
  D_ID , K_ID , V_ID , PHI_ID ,
  THICKNESS_ID , NUM_PROPERTY_IDS
}
 IDs for physics element properties. More...
 
enum  BoundaryConditionIds {
  PRESCRIBED_C_BC_ID , PRESCRIBED_FLUX_BC_ID , PRESCRIBED_MIXED_BC_ID , PRESCRIBED_CN_BC_ID ,
  NUM_BC_IDS
}
 IDs for accepted boundary condition types. More...
 
enum  BoundaryConditionValueIds {
  BC_C_ID , BC_CN_ID , BC_Q_ID , BC_QDIR_ID ,
  BC_MX_ID , NUM_BCV_IDS
}
 IDs for property values from accepted boundary condition types. More...
 

Protected Member Functions

virtual bool checkAndLoadPrivateData (LuaTable &table)
 
virtual bool reactionRate (const GmElement *e, const GmVector *ip, int ipIndex, const GmVector &N, const GmVector &C, double wtJ, GmVector &elemFe, GmMatrix &elemK, bool needsFe, bool needsK)
 Virtual function called by fillElementData() for each integration point so that derived classes can add specific reaction rate terms to the convection-diffusion equation.
 
- Protected Member Functions inherited from GmpChemicalFemPhysics

Private Attributes

IPhreeqc _IPhreeqcReaction
 
GmpFemNeuralNetwork * _net
 Neural network data.
 

Additional Inherited Members

- Protected Attributes inherited from GmpChemicalFemPhysics
GmVector _data
 Save alkalinity data for boundary condition.
 
GmVector _Cglobal
 

Detailed Description

Extends the basic chemical physics transport equation by providing reaction rates based on the Iphreeqc package.

Member Enumeration Documentation

◆ ANNGaussAttributeIds

Enumerator
NUM_GA_IDS 

The number of gauss attributes.

◆ ANNNodeAttributeIds

IDs for physics node attributes.

Enumerator
IonSol_NA_ID 

Base Id for Ion transport node attribute(s)

IonSolOld_NA_ID 

Base Id for history of Ion transport node attribute(s)

SIndex_NA_ID 

Base Id for Saturation index.

PH_NA_ID 

Base Id for pH solution.

EqRxn_NA_ID 

Base Id for Reaction in equillibrium.

Mineral_NA_ID 

Base Id for mineral for reaction.

poroM_NA_ID 

Base Id for porosity variation.

Ctrate_NA_ID 

Base Id for Kinetics reaction Control.

NUM_NA_IDS 

The number of node attribute ids above.

◆ ANNPhysicsAttributeIds

Additional IDs for physics attributes.

Enumerator
IPHREEQC_DATABASE_ID 

Id for retrieving the reaction matrix physics attribute.

REACTION_TYPE_ID 

Id for retrieving the reaction type physics attribute.

NUM_ATTRIBUTE_IDS 

The number of attribute ids above.

Member Function Documentation

◆ calcDerivedResults()

bool GmpNeuralNetworkReaction::calcDerivedResults ( bool nonLinearSolver)
virtual

Calc velocity and flow on nodes and/or Gauss points.

Reimplemented from GmpChemicalFemPhysics.

◆ checkLoadedData()

bool GmpNeuralNetworkReaction::checkLoadedData ( )
virtual

Checks the existance of the velocity accessor, and also sizes for the dispersion and retardation coefficients, as well as sizes for the prescribed concentration and prescribed flux boundary conditions.

Reimplemented from GmpChemicalFemPhysics.

◆ physicsMetaDataMap()

const QVariantMap * GmpNeuralNetworkReaction::physicsMetaDataMap ( )
virtual

Returns a pointer to the basic chemical physics attribute map, built when the function is called for the first time. Will be extended by sub-classes providing the reactive term.

Reimplemented from GmpChemicalFemPhysics.

◆ reactionRate()

bool GmpNeuralNetworkReaction::reactionRate ( const GmElement * e,
const GmVector * ip,
int ipIndex,
const GmVector & N,
const GmVector & C,
double wtJ,
GmVector & elemFe,
GmMatrix & elemK,
bool needsFe,
bool needsK )
protectedvirtual

Virtual function called by fillElementData() for each integration point so that derived classes can add specific reaction rate terms to the convection-diffusion equation.

It receives as parameters the current element, integration point coordinate and index being processed, along with the shape function vector calculated over this point, a concentration vector for the element nodes and a constant 'wtJ' storing the product of the current integration point weight, the element thickness for 2D scenarions and the element Jacobian determinant.

The function should add its contributions to the elemFe and elemK vector / matrix according to the request given by needsFe and needsK.

Implements GmpChemicalFemPhysics.


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