NimbleSM
NimbleSM is a solid mechanics simulation code for dynamic systems
Loading...
Searching...
No Matches
ExpressionParsing::BoundaryConditionFunctor Struct Reference

#include <nimble_expression_parser.h>

Public Member Functions

 BoundaryConditionFunctor ()
 
 BoundaryConditionFunctor (const std::string &equation)
 
 BoundaryConditionFunctor (const BoundaryConditionFunctor &other)
 
BoundaryConditionFunctoroperator= (const BoundaryConditionFunctor &other)
 
BoundaryConditionFunctoroperator= (const std::string &equation)
 
double eval ()
 
double eval (double x, double y, double z, double t)
 
double operator() (double x, double y, double z, double t)
 
 ~BoundaryConditionFunctor ()
 

Public Attributes

double x = 0
 
double y = 0
 
double z = 0
 
double t = 0
 
EquationContextcontext
 
RealValuedExpressionexpression = nullptr
 
std::string equation
 

Constructor & Destructor Documentation

◆ BoundaryConditionFunctor() [1/3]

ExpressionParsing::BoundaryConditionFunctor::BoundaryConditionFunctor ( )
inline
704: context(0) {} // Sets context to nil
EquationContext * context
Definition nimble_expression_parser.h:700

◆ BoundaryConditionFunctor() [2/3]

ExpressionParsing::BoundaryConditionFunctor::BoundaryConditionFunctor ( const std::string & equation)
inline
706 {
707 if (equation == "") {
708 // Acts as default constructor if given an empty string
709 context = 0;
710 return;
711 }
712 try {
713 context = new EquationContext();
714 // Usage: context->AddVarible(name, reference);
715 context->AddVarible("x", x); // Passes a reference to x
716 context->AddVarible("y", y); // Passes a reference to y
717 context->AddVarible("z", z); // Passes a reference to z
718 context->AddVarible("t", t); // Passes a reference to t
719 // Creates the Computable Expression Object
720 expression = context->ParseEquation(equation);
721 // Optimizes the Computable Expression Object
722 expression = expression->optimize(context->mem);
723 this->equation = equation; // Stores a copy of the equation
724 } catch (std::invalid_argument arg) {
725 if (context) delete context;
726 context = 0;
727 throw arg;
728 }
729 }
RealValuedExpression * expression
Definition nimble_expression_parser.h:702
std::string equation
Definition nimble_expression_parser.h:703
double t
Definition nimble_expression_parser.h:699
double x
Definition nimble_expression_parser.h:699
double y
Definition nimble_expression_parser.h:699
double z
Definition nimble_expression_parser.h:699

◆ BoundaryConditionFunctor() [3/3]

ExpressionParsing::BoundaryConditionFunctor::BoundaryConditionFunctor ( const BoundaryConditionFunctor & other)
inline
730: BoundaryConditionFunctor(other.equation) {}
BoundaryConditionFunctor()
Definition nimble_expression_parser.h:704

◆ ~BoundaryConditionFunctor()

ExpressionParsing::BoundaryConditionFunctor::~BoundaryConditionFunctor ( )
inline
796 {
797 if (context) delete context;
798 // RealValuedExpression* expression is managed by the EquationContext,
799 // And will be destroyed when "context" is deleted.
800 }

Member Function Documentation

◆ eval() [1/2]

double ExpressionParsing::BoundaryConditionFunctor::eval ( )
inline
759 {
760 if (!expression) {
761 throw std::invalid_argument(
762 "Error in BoundaryConditionFunctor::eva(), expression pointer is "
763 "null.");
764 }
765 return *expression;
766 }

◆ eval() [2/2]

double ExpressionParsing::BoundaryConditionFunctor::eval ( double x,
double y,
double z,
double t )
inline
769 {
770 this->x = x;
771 this->y = y;
772 this->z = z;
773 this->t = t;
774 if (!expression) {
775 throw std::invalid_argument(
776 "Error in BoundaryConditionFunctor::eva(), expression pointer is "
777 "null.");
778 }
779 return *expression;
780 }

◆ operator()()

double ExpressionParsing::BoundaryConditionFunctor::operator() ( double x,
double y,
double z,
double t )
inline
783 {
784 this->x = x;
785 this->y = y;
786 this->z = z;
787 this->t = t;
788 if (!expression) {
789 throw std::invalid_argument(
790 "Error in BoundaryConditionFunctor::eva(), expression pointer is "
791 "null.");
792 }
793 return *expression; // Evaluates the Computable Expression Object
794 }

◆ operator=() [1/2]

BoundaryConditionFunctor & ExpressionParsing::BoundaryConditionFunctor::operator= ( const BoundaryConditionFunctor & other)
inline
733 {
734 return *this = other.equation;
735 }

◆ operator=() [2/2]

BoundaryConditionFunctor & ExpressionParsing::BoundaryConditionFunctor::operator= ( const std::string & equation)
inline
738 {
739 EquationContext* old_context = context;
740 try {
741 context = new EquationContext();
742 context->AddVarible("x", x);
743 context->AddVarible("y", y);
744 context->AddVarible("z", z);
745 context->AddVarible("t", t);
746 expression = context->ParseEquation(equation);
747 expression = expression->optimize(context->mem);
748 this->equation = equation;
749 if (old_context) delete old_context;
750 return *this;
751 } catch (std::invalid_argument arg) {
752 if (context) delete context;
753 context = old_context;
754 throw arg;
755 }
756 }

Member Data Documentation

◆ context

EquationContext* ExpressionParsing::BoundaryConditionFunctor::context

◆ equation

std::string ExpressionParsing::BoundaryConditionFunctor::equation

◆ expression

RealValuedExpression* ExpressionParsing::BoundaryConditionFunctor::expression = nullptr

◆ t

double ExpressionParsing::BoundaryConditionFunctor::t = 0

◆ x

double ExpressionParsing::BoundaryConditionFunctor::x = 0

◆ y

double ExpressionParsing::BoundaryConditionFunctor::y = 0

◆ z

double ExpressionParsing::BoundaryConditionFunctor::z = 0

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