Changeset 1897
- Timestamp:
- 08/25/09 16:24:45 (16 years ago)
- Location:
- issm/trunk/src/c/objects
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Penpair.cpp
r803 r1897 22 22 } 23 23 24 Penpair::Penpair(int penpair_id, double penpair_penalty_offset,int penpair_penalty_lock,int penpair_numdofs,int penpair_node_ids[2],int penpair_dof, 25 int penpair_element_ids[2],double penpair_friction,int penpair_fill,double penpair_normal[2],double penpair_length){ 24 Penpair::Penpair(int penpair_id, double penpair_penalty_offset,int penpair_penalty_lock,int penpair_node_ids[2],int penpair_dof){ 26 25 27 26 int i; … … 29 28 penalty_offset =penpair_penalty_offset; 30 29 penalty_lock =penpair_penalty_lock; 31 numdofs =penpair_numdofs;32 30 33 31 for(i=0;i<2;i++){ … … 36 34 nodes[i]=NULL; 37 35 38 element_ids[i]=penpair_element_ids[i];39 element_offsets[i]=UNDEF;40 elements[i]=NULL;41 36 } 42 37 dof=penpair_dof; 43 38 44 friction =penpair_friction;45 fill =penpair_fill;46 normal[0]=penpair_normal[0];47 normal[1]=penpair_normal[1];48 length=penpair_length;49 50 39 return; 51 40 } … … 63 52 printf(" penalty_offset: %g\n",penalty_offset); 64 53 printf(" penalty_lock: %i\n",penalty_lock); 65 printf(" numdofs: %i\n",numdofs);66 54 printf(" node_ids: [%i %i]\n",node_ids[0],node_ids[1]); 67 55 printf(" node_offsets: [%i %i]\n",node_offsets[0],node_offsets[1]); 68 56 printf(" dof: %i\n",dof); 69 printf(" element_ids: [%i %i]\n",element_ids[0],element_ids[1]);70 printf(" element_offsets: [%i %i]\n",element_offsets[0],element_offsets[1]);71 printf(" friction: %g\n",friction);72 printf(" fill: %i\n",fill);73 printf(" normal: %g %g\n",normal[0],normal[1]);74 printf(" length: %g\n",length);75 57 76 58 for(i=0;i<2;i++){ 77 59 if(nodes[i])nodes[i]->Echo(); 78 if(elements[i])elements[i]->Echo();79 60 } 80 61 return; … … 88 69 printf(" penalty_offset: %g\n",penalty_offset); 89 70 printf(" penalty_lock: %i\n",penalty_lock); 90 printf(" numdofs: %i\n",numdofs);91 71 printf(" node_ids: [%i %i]\n",node_ids[0],node_ids[1]); 92 72 printf(" node_offsets: [%i %i]\n",node_offsets[0],node_offsets[1]); 93 73 printf(" dof: %i\n",dof); 94 printf(" element_ids: [%i %i]\n",element_ids[0],element_ids[1]);95 printf(" element_offsets: [%i %i]\n",element_offsets[0],element_offsets[1]);96 printf(" friction: %g\n",friction);97 printf(" fill: %i\n",fill);98 printf(" normal: %g %g\n",normal[0],normal[1]);99 printf(" length: %g\n",length);100 74 101 75 for(i=0;i<2;i++){ 102 76 if(nodes[i])nodes[i]->Echo(); 103 if(elements[i])elements[i]->Echo();104 77 } 105 78 return; … … 123 96 memcpy(marshalled_dataset,&penalty_offset,sizeof(penalty_offset));marshalled_dataset+=sizeof(penalty_offset); 124 97 memcpy(marshalled_dataset,&penalty_lock,sizeof(penalty_lock));marshalled_dataset+=sizeof(penalty_lock); 125 memcpy(marshalled_dataset,&numdofs,sizeof(numdofs));marshalled_dataset+=sizeof(numdofs);126 98 memcpy(marshalled_dataset,&dof,sizeof(dof));marshalled_dataset+=sizeof(dof); 127 99 memcpy(marshalled_dataset,&node_ids,sizeof(node_ids));marshalled_dataset+=sizeof(node_ids); 128 100 memcpy(marshalled_dataset,&node_offsets,sizeof(node_offsets));marshalled_dataset+=sizeof(node_offsets); 129 memcpy(marshalled_dataset,&element_ids,sizeof(element_ids));marshalled_dataset+=sizeof(element_ids);130 memcpy(marshalled_dataset,&element_offsets,sizeof(element_offsets));marshalled_dataset+=sizeof(element_offsets);131 memcpy(marshalled_dataset,&friction,sizeof(friction));marshalled_dataset+=sizeof(friction);132 memcpy(marshalled_dataset,&fill,sizeof(fill));marshalled_dataset+=sizeof(fill);133 memcpy(marshalled_dataset,&normal,sizeof(normal));marshalled_dataset+=sizeof(normal);134 memcpy(marshalled_dataset,&length,sizeof(length));marshalled_dataset+=sizeof(length);135 101 136 102 *pmarshalled_dataset=marshalled_dataset; … … 143 109 sizeof(penalty_offset)+ 144 110 sizeof(penalty_lock)+ 145 sizeof(numdofs)+146 111 sizeof(dof)+ 147 112 sizeof(node_ids)+ 148 113 sizeof(node_offsets)+ 149 sizeof(element_ids)+150 sizeof(element_offsets)+151 sizeof(friction)+152 sizeof(fill)+153 sizeof(normal)+154 sizeof(length)+155 114 sizeof(int); //sizeof(int) for enum type 156 115 } … … 175 134 memcpy(&penalty_offset,marshalled_dataset,sizeof(penalty_offset));marshalled_dataset+=sizeof(penalty_offset); 176 135 memcpy(&penalty_lock,marshalled_dataset,sizeof(penalty_lock));marshalled_dataset+=sizeof(penalty_lock); 177 memcpy(&numdofs,marshalled_dataset,sizeof(numdofs));marshalled_dataset+=sizeof(numdofs);178 136 memcpy(&dof,marshalled_dataset,sizeof(dof));marshalled_dataset+=sizeof(dof); 179 137 memcpy(&node_ids,marshalled_dataset,sizeof(node_ids));marshalled_dataset+=sizeof(node_ids); 180 138 memcpy(&node_offsets,marshalled_dataset,sizeof(node_offsets));marshalled_dataset+=sizeof(node_offsets); 181 memcpy(&element_ids,marshalled_dataset,sizeof(element_ids));marshalled_dataset+=sizeof(element_ids); 182 memcpy(&element_offsets,marshalled_dataset,sizeof(element_offsets));marshalled_dataset+=sizeof(element_offsets); 183 memcpy(&friction,marshalled_dataset,sizeof(friction));marshalled_dataset+=sizeof(friction); 184 memcpy(&fill,marshalled_dataset,sizeof(fill));marshalled_dataset+=sizeof(fill); 185 memcpy(&normal,marshalled_dataset,sizeof(normal));marshalled_dataset+=sizeof(normal); 186 memcpy(&length,marshalled_dataset,sizeof(length));marshalled_dataset+=sizeof(length); 187 188 for(i=0;i<2;i++){ 189 elements[i]=NULL; 139 140 for(i=0;i<2;i++){ 190 141 nodes[i]=NULL; 191 142 } … … 206 157 return my_rank; 207 158 } 208 void Penpair::DistributeNumDofs(int* numdofspernode,int analysis_type,int sub_analysis_type){return;} 209 210 #undef __FUNCT__ 159 160 #undef __FUNCT__ 211 161 #define __FUNCT__ "Penpair::Configure" 212 162 … … 222 172 ResolvePointers((Object**)nodes,node_ids,node_offsets,2,nodesin); 223 173 224 if(numdofs==2){ 225 /* This is a rift so we need to link the load with the elements*/ 226 ResolvePointers((Object**)&elements,element_ids,element_offsets,2,elementsin); 227 } 228 } 229 174 } 230 175 231 176 #undef __FUNCT__ … … 256 201 #define __FUNCT__ "Penpair::PenaltyCreateKMatrix" 257 202 void Penpair::PenaltyCreateKMatrix(Mat Kgg,void* inputs,double kmax,int analysis_type,int sub_analysis_type){ 258 if(numdofs==1){ 259 260 /*No loads applied, do nothing: */ 261 return; 262 263 } 264 else if (numdofs==2){ 265 throw ErrorException(__FUNCT__," not implemented yet!"); 266 } 203 204 /*No loads applied, do nothing: */ 205 return; 267 206 } 268 207 … … 270 209 #define __FUNCT__ "Penpair::PenaltyCreatePVector" 271 210 void Penpair::PenaltyCreatePVector(Vec pg,void* inputs,double kmax,int analysis_type,int sub_analysis_type){ 272 if(numdofs==1){ 273 274 /*No loads applied, do nothing: */ 275 return; 276 277 } 278 else if (numdofs==2){ 279 throw ErrorException(__FUNCT__," not implemented yet!"); 280 } 211 /*No loads applied, do nothing: */ 212 return; 281 213 } 282 214 … … 284 216 return new Penpair(*this); 285 217 } 286 287 int Penpair::GetNumDofs(){ 288 return numdofs; 289 } 290 218 -
issm/trunk/src/c/objects/Penpair.h
r803 r1897 17 17 double penalty_offset; //penalty used 18 18 int penalty_lock; //maximum counter can go until locks the penalty. 19 int numdofs; //switch from penalty pairing of 1 or 2 dofs.20 19 21 20 /*nodes: */ … … 27 26 int dof; 28 27 29 /*penalty pairing of two dofs: */30 int element_ids[2];//elements for those two grids31 Element* elements[2];32 int element_offsets[2];33 34 double friction; //friction coefficient35 int fill;36 double normal[2];37 double length;38 39 28 public: 40 29 41 30 Penpair(); 42 Penpair(int id, double penalty_offset,int penalty_lock,int n umdofs,int nodes_ids[2],int dof,int element_ids[2],double friction,int fill,double normal[2],double length);31 Penpair(int id, double penalty_offset,int penalty_lock,int nodes_ids[2],int dof); 43 32 ~Penpair(); 44 33 … … 52 41 int GetId(); 53 42 int MyRank(); 54 void DistributeNumDofs(int* numdofspernode,int analysis_type,int sub_analysis_type);55 43 void Configure(void* elements,void* nodes,void* materials); 56 44 void CreateKMatrix(Mat Kgg,void* inputs,int analysis_type,int sub_analysis_type); … … 59 47 void PenaltyCreateKMatrix(Mat Kgg,void* inputs,double kmax,int analysis_type,int sub_analysis_type); 60 48 void PenaltyCreatePVector(Vec pg,void* inputs,double kmax,int analysis_type,int sub_analysis_type); 61 int GetNumDofs();62 49 Object* copy(); 63 50 };
Note:
See TracChangeset
for help on using the changeset viewer.