[cig-commits] commit: Update to use muparserx
Mercurial
hg at geodynamics.org
Wed Nov 9 00:47:30 PST 2011
changeset: 441:ba95eb221540
tag: tip
user: Walter Landry <wlandry at caltech.edu>
date: Wed Nov 09 00:47:20 2011 -0800
files: Utils/src/BuoyancyForceTerm.cxx Utils/src/HydrostaticTerm.cxx
description:
Update to use muparserx
diff -r b31e0806821e -r ba95eb221540 Utils/src/BuoyancyForceTerm.cxx
--- a/Utils/src/BuoyancyForceTerm.cxx Wed Nov 02 15:53:43 2011 -0700
+++ b/Utils/src/BuoyancyForceTerm.cxx Wed Nov 09 00:47:20 2011 -0800
@@ -50,7 +50,6 @@
#include <PICellerator/PopulationControl/PopulationControl.h>
#include <PICellerator/Weights/Weights.h>
#include <PICellerator/MaterialPoints/MaterialPoints.h>
-#include "muParser.h"
#include "types.h"
#include "BuoyancyForceTerm.h"
@@ -63,6 +62,7 @@
#include <assert.h>
#include <string.h>
#include <stddef.h>
+#include <sstream>
static std::vector<std::string> densities, alphas;
@@ -359,14 +359,6 @@ void _BuoyancyForceTerm_Destroy( void* f
_ForceTerm_Destroy( forceTerm, data );
}
-mu::value_type* BuoyancyForceTerm_AddVariable(const mu::char_type *a_szName,
- void *a_pUserData)
-{
- static std::list<mu::value_type> variables;
- variables.push_front(0);
- return &(*(variables.begin()));
-}
-
void _BuoyancyForceTerm_AssembleElement( void* forceTerm, ForceVector* forceVector, Element_LocalIndex lElement_I, double* elForceVec ) {
BuoyancyForceTerm* self = (BuoyancyForceTerm*) forceTerm;
IntegrationPoint* particle;
@@ -476,16 +468,14 @@ void _BuoyancyForceTerm_AssembleElement(
density_equation = densities[material_index];
if(!density_equation.empty())
{
- mu::Parser d;
- d.DefineVar("T",&temperature);
- d.DefineVar("p",&pressure);
- d.SetVarFactory(BuoyancyForceTerm_AddVariable, &d);
- d.SetExpr(density_equation);
- density=d.Eval();
+ std::stringstream ss;
- Journal_Printf(Journal_MyStream(Info_Type,self),
- "Density Equation T=%g p=%g density=%g\n",
- temperature,pressure,density);
+ ss << "T=" << temperature
+ << "; p=" << pressure
+ << "; " << density_equation;
+ density=Equation_eval(coord,
+ (DomainContext *)(self->context),
+ ss.str());
}
else
{
@@ -497,15 +487,14 @@ void _BuoyancyForceTerm_AssembleElement(
alpha_equation = alphas[material_index];
if(!alpha_equation.empty())
{
- mu::Parser d;
- d.DefineVar("T",&temperature);
- d.DefineVar("p",&pressure);
- d.SetVarFactory(BuoyancyForceTerm_AddVariable, &d);
- d.SetExpr(alpha_equation);
- alpha=d.Eval();
- Journal_PrintfL(Journal_MyStream(Debug_Type,self),3,
- "Alpha Equation T=%g p=%g alpha=%g\n",
- temperature,pressure,alpha);
+ std::stringstream ss;
+
+ ss << "T=" << temperature
+ << "; p=" << pressure
+ << "; " << density_equation;
+ alpha=Equation_eval(coord,
+ (DomainContext *)(self->context),
+ ss.str());
}
else
{
diff -r b31e0806821e -r ba95eb221540 Utils/src/HydrostaticTerm.cxx
--- a/Utils/src/HydrostaticTerm.cxx Wed Nov 02 15:53:43 2011 -0700
+++ b/Utils/src/HydrostaticTerm.cxx Wed Nov 09 00:47:20 2011 -0800
@@ -55,7 +55,6 @@
#include <string>
#include "HydrostaticTerm.h"
#include "MaterialSwarmVariable.h"
-#include "muParser.h"
#include <assert.h>
#include <string.h>
@@ -350,27 +349,12 @@ double HydrostaticTerm_Temperature(void*
return T;
}
-mu::value_type* HydrostaticTerm_AddVariable(const mu::char_type *a_szName,
- void *a_pUserData)
-{
- static std::list<mu::value_type> variables;
- variables.push_front(0);
- return &(*(variables.begin()));
-}
-
double HydrostaticTerm_Density( void* forceTerm, Coord coord)
{
HydrostaticTerm *self=(HydrostaticTerm *)forceTerm;
if(self->density_equation!=NULL && strlen(self->density_equation)!=0)
{
- mu::Parser d;
- d.DefineVar("x", coord);
- d.DefineVar("y", coord+1);
- d.DefineVar("z", coord+2);
- d.DefineVar("t", &(self->context->currentTime));
- d.SetVarFactory(HydrostaticTerm_AddVariable, &d);
- d.SetExpr(self->density_equation);
- return d.Eval();
+ return Equation_eval(coord,(DomainContext*)(self->context),self->density_equation);
}
else
{
@@ -418,14 +402,7 @@ double HydrostaticTerm_Pressure( void* f
HydrostaticTerm *self=(HydrostaticTerm *)forceTerm;
if(self->pressure_equation!=NULL && strlen(self->pressure_equation)!=0)
{
- mu::Parser p;
- p.DefineVar("x", coord);
- p.DefineVar("y", coord+1);
- p.DefineVar("z", coord+2);
- p.DefineVar("t", &(self->context->currentTime));
- p.SetVarFactory(HydrostaticTerm_AddVariable, &p);
- p.SetExpr(self->pressure_equation);
- return p.Eval();
+ return Equation_eval(coord,(DomainContext*)(self->context),self->pressure_equation);
}
else
{
More information about the CIG-COMMITS
mailing list