Ice Sheet System Model  4.18
Code documentation
SpcDynamic.cpp
Go to the documentation of this file.
1 
5 #ifdef HAVE_CONFIG_H
6  #include <config.h>
7 #else
8 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
9 #endif
10 
11 #include "../classes.h"
12 #include "./Constraint.h"
13 #include "../../shared/shared.h"
14 
15 /*SpcDynamic constructors and destructor*/
17  return;
18 }
19 /*}}}*/
20 SpcDynamic::SpcDynamic(int spc_id,int spc_nodeid, int spc_dof,int spc_analysis_type){/*{{{*/
21 
22  id = spc_id;
23  nodeid = spc_nodeid;
24  dof = spc_dof;
25  value = 0;
26  analysis_type = spc_analysis_type;
27  isset = false;
28  penalty = false;
29 
30  return;
31 }
32 /*}}}*/
34  return;
35 }
36 /*}}}*/
37 
38 /*Object virtual functions definitions:*/
40 
41  SpcDynamic* spcdyn = new SpcDynamic(*this);
42 
43  spcdyn->id=this->id;
44  spcdyn->nodeid=this->nodeid;
45  spcdyn->dof=this->dof;
46  spcdyn->value=this->value;
47  spcdyn->analysis_type=this->analysis_type;
48  spcdyn->isset=this->isset;
49 
50  return (Object*) spcdyn;
51 }
52 /*}}}*/
53 void SpcDynamic::DeepEcho(void){/*{{{*/
54 
55  this->Echo();
56  return;
57 }
58 /*}}}*/
59 void SpcDynamic::Echo(void){/*{{{*/
60 
61  _printf_("SpcDynamic:\n");
62  _printf_(" id: " << id << "\n");
63  _printf_(" nodeid: " << nodeid << "\n");
64  _printf_(" dof: " << dof << "\n");
65  _printf_(" value: " << value << "\n");
66  _printf_(" isset: " <<(isset?"true":"false") << "\n");
67  _printf_(" analysis_type: " << EnumToStringx(analysis_type) << "\n");
68  return;
69 }
70 /*}}}*/
71 int SpcDynamic::Id(void){ return id; }/*{{{*/
72 /*}}}*/
73 void SpcDynamic::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
74 
76 
77  MARSHALLING(id);
84 
85 }
86 /*}}}*/
87 int SpcDynamic::ObjectEnum(void){/*{{{*/
88 
89  return SpcDynamicEnum;
90 
91 }
92 /*}}}*/
93 
94 /*Constraint virtual functions definitions: */
96  this->penalty = true;
97 }
98 /*}}}*/
99 void SpcDynamic::ConstrainNode(Nodes* nodes,Parameters* parameters){/*{{{*/
100 
101  Node* node=NULL;
102 
103  /*Chase through nodes and find the node to which this SpcDynamic applys: */
104  node=(Node*)nodes->GetObjectById(NULL,nodeid);
105 
106  /*Apply constraint: */
107  if(node){ //in case the spc is dealing with a node on another cpu
108 
109  /*We should first check that the value has been set... (test306)*/
110  node->ApplyConstraint(dof,value);
111  }
112 }
113 /*}}}*/
114 
115 /*SpcDynamic functions*/
116 int SpcDynamic::GetDof(){/*{{{*/
117  return dof;
118 }
119 /*}}}*/
121 
122  return nodeid;
123 }
124 /*}}}*/
126  _assert_(this->isset);
127  _assert_(!xIsNan<IssmDouble>(value));
128  return value;
129 }
130 /*}}}*/
131 void SpcDynamic::SetDynamicConstraint(Nodes* nodes,IssmDouble* yg_serial){/*{{{*/
132 
133  int pos;
134 
135  Node* node=(Node*)nodes->GetObjectById(NULL,nodeid);
136  pos=node->GetDof(dof,GsetEnum);
137 
138  this->value=yg_serial[pos];
139  this->isset=true;
140 }
141 /*}}}*/
SpcDynamic::ConstrainNode
void ConstrainNode(Nodes *nodes, Parameters *parameters)
Definition: SpcDynamic.cpp:99
SpcDynamic::nodeid
int nodeid
Definition: SpcDynamic.h:17
_assert_
#define _assert_(ignore)
Definition: exceptions.h:37
IssmDouble
double IssmDouble
Definition: types.h:37
Nodes
Declaration of Nodes class.
Definition: Nodes.h:19
DataSet::GetObjectById
Object * GetObjectById(int *poffset, int eid)
Definition: DataSet.cpp:345
_printf_
#define _printf_(StreamArgs)
Definition: Print.h:22
SpcDynamic::~SpcDynamic
~SpcDynamic()
Definition: SpcDynamic.cpp:33
Parameters
Declaration of Parameters class.
Definition: Parameters.h:18
MARSHALLING_ENUM
#define MARSHALLING_ENUM(EN)
Definition: Marshalling.h:14
SpcDynamic::Id
int Id()
Definition: SpcDynamic.cpp:71
Constraint.h
abstract class for Constraint object This class is a place holder for constraints It is derived from ...
SpcDynamic::GetNodeId
int GetNodeId()
Definition: SpcDynamic.cpp:120
SpcDynamic::value
IssmDouble value
Definition: SpcDynamic.h:19
Object
Definition: Object.h:13
SpcDynamic::dof
int dof
Definition: SpcDynamic.h:18
EnumToStringx
const char * EnumToStringx(int enum_in)
Definition: EnumToStringx.cpp:15
SpcDynamic::Echo
void Echo()
Definition: SpcDynamic.cpp:59
GsetEnum
@ GsetEnum
Definition: EnumDefinitions.h:1093
SpcDynamicEnum
@ SpcDynamicEnum
Definition: EnumDefinitions.h:1279
MARSHALLING
#define MARSHALLING(FIELD)
Definition: Marshalling.h:29
SpcDynamic::Marshall
void Marshall(char **pmarshalled_data, int *pmarshalled_data_size, int marshall_direction)
Definition: SpcDynamic.cpp:73
SpcDynamic::copy
Object * copy()
Definition: SpcDynamic.cpp:39
SpcDynamic::ObjectEnum
int ObjectEnum()
Definition: SpcDynamic.cpp:87
SpcDynamic
Definition: SpcDynamic.h:13
SpcDynamic::SpcDynamic
SpcDynamic()
Definition: SpcDynamic.cpp:16
SpcDynamic::ActivatePenaltyMethod
void ActivatePenaltyMethod(void)
Definition: SpcDynamic.cpp:95
SpcDynamic::GetDof
int GetDof()
Definition: SpcDynamic.cpp:116
Node
Definition: Node.h:23
SpcDynamic::GetValue
IssmDouble GetValue()
Definition: SpcDynamic.cpp:125
SpcDynamic::DeepEcho
void DeepEcho()
Definition: SpcDynamic.cpp:53
Node::ApplyConstraint
void ApplyConstraint(int dof, IssmDouble value)
Definition: Node.cpp:646
SpcDynamic::penalty
bool penalty
Definition: SpcDynamic.h:22
SpcDynamic::isset
bool isset
Definition: SpcDynamic.h:20
SpcDynamic::analysis_type
int analysis_type
Definition: SpcDynamic.h:21
SpcDynamic::SetDynamicConstraint
void SetDynamicConstraint(Nodes *nodes, IssmDouble *yg_serial)
Definition: SpcDynamic.cpp:131
SpcDynamic::id
int id
Definition: SpcDynamic.h:16
Node::GetDof
int GetDof(int dofindex, int setenum)
Definition: Node.cpp:374