/*!\file SpcStatic.c * \brief: implementation of the SpcStatic object */ #ifdef HAVE_CONFIG_H #include #else #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!" #endif #include "../classes.h" #include "./Constraint.h" #include "../../shared/shared.h" /*SpcStatic constructors and destructor*/ /*FUNCTION SpcStatic::SpcStatic(){{{*/ SpcStatic::SpcStatic(){ return; } /*}}}*/ /*FUNCTION SpcStatic::SpcStatic(int spc_sid,int spc_nodeid,...){{{*/ SpcStatic::SpcStatic(int spc_sid,int spc_nodeid, int spc_dof,IssmDouble spc_value,int spc_analysis_type){ sid=spc_sid; nodeid=spc_nodeid; dof=spc_dof; value=spc_value; analysis_type=spc_analysis_type; return; } /*}}}*/ /*FUNCTION SpcStatic::~SpcStatic{{{*/ SpcStatic::~SpcStatic(){ return; } /*}}}*/ /*Object virtual functions definitions:*/ /*FUNCTION SpcStatic::Echo {{{*/ void SpcStatic::Echo(void){ _printString_("SpcStatic:" << "\n"); _printString_(" sid: " << sid << "\n"); _printString_(" nodeid: " << nodeid << "\n"); _printString_(" dof: " << dof << "\n"); _printString_(" value: " << value << "\n"); _printString_(" analysis_type: " << EnumToStringx(analysis_type) << "\n"); return; } /*}}}*/ /*FUNCTION SpcStatic::DeepEcho {{{*/ void SpcStatic::DeepEcho(void){ _printString_("SpcStatic:" << "\n"); _printString_(" sid: " << sid << "\n"); _printString_(" nodeid: " << nodeid << "\n"); _printString_(" dof: " << dof << "\n"); _printString_(" value: " << value << "\n"); _printString_(" analysis_type: " << EnumToStringx(analysis_type) << "\n"); return; } /*}}}*/ /*FUNCTION SpcStatic::Id {{{*/ int SpcStatic::Id(void){ return sid; } /*}}}*/ /*FUNCTION SpcStatic::ObjectEnum{{{*/ int SpcStatic::ObjectEnum(void){ return SpcStaticEnum; } /*}}}*/ /*FUNCTION SpcStatic::copy {{{*/ Object* SpcStatic::copy() { return new SpcStatic(*this); } /*}}}*/ /*Constraint virtual functions definitions: */ /*FUNCTION SpcStatic::InAnalysis{{{*/ bool SpcStatic::InAnalysis(int in_analysis_type){ if (in_analysis_type==this->analysis_type) return true; else return false; } /*}}}*/ /*FUNCTION SpcStatic::ConstrainNode{{{*/ void SpcStatic::ConstrainNode(Nodes* nodes,Parameters* parameters){ Node* node=NULL; /*Chase through nodes and find the node to which this SpcStatic applys: */ node=(Node*)nodes->GetObjectById(NULL,nodeid); /*Apply constraint: */ if(node){ //in case the spc is dealing with a node on another cpu node->ApplyConstraint(dof,value); } } /*}}}*/ /*SpcStatic functions*/ /*FUNCTION SpcStatic::GetDof {{{*/ int SpcStatic::GetDof(){ return dof; } /*}}}*/ /*FUNCTION SpcStatic::GetNodeId {{{*/ int SpcStatic::GetNodeId(){ return nodeid; } /*}}}*/ /*FUNCTION SpcStatic::GetValue {{{*/ IssmDouble SpcStatic::GetValue(){ _assert_(!xIsNan(value)); return value; } /*}}}*/