Changeset 4983
- Timestamp:
- 08/04/10 13:17:11 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 1 deleted
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Makefile.am
r4969 r4983 542 542 ./modules/Qmux/SpawnCore.cpp\ 543 543 ./modules/Qmux/SpawnCoreSerial.cpp\ 544 ./modules/VecExtrudex/VecExtrudex.cpp\545 ./modules/VecExtrudex/VecExtrudex.h\546 544 ./modules/InputToResultx/InputToResultx.cpp\ 547 545 ./modules/InputToResultx/InputToResultx.h\ … … 561 559 libISSM_a_CXXFLAGS += -DMX_COMPAT_32 -m32 562 560 endif 563 564 565 561 566 562 #Parallel compilation … … 1077 1073 ./modules/Qmux/SpawnCore.cpp\ 1078 1074 ./modules/Qmux/SpawnCoreParallel.cpp\ 1079 ./modules/VecExtrudex/VecExtrudex.cpp\1080 ./modules/VecExtrudex/VecExtrudex.h\1081 1075 ./modules/InputToResultx/InputToResultx.cpp\ 1082 1076 ./modules/InputToResultx/InputToResultx.h\ -
issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp
r4919 r4983 41 41 if (iomodel->dim==3){ 42 42 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 43 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");44 43 } 45 44 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); … … 91 90 xfree((void**)&iomodel->gridonbed); 92 91 xfree((void**)&iomodel->gridonsurface); 93 xfree((void**)&iomodel->uppernodes);94 92 xfree((void**)&iomodel->gridonicesheet); 95 93 xfree((void**)&iomodel->gridoniceshelf); -
issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp
r4919 r4983 34 34 if (iomodel->dim==3){ 35 35 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 36 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");37 36 } 38 37 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); … … 55 54 xfree((void**)&iomodel->gridonbed); 56 55 xfree((void**)&iomodel->gridonsurface); 57 xfree((void**)&iomodel->uppernodes);58 56 xfree((void**)&iomodel->gridonicesheet); 59 57 xfree((void**)&iomodel->gridoniceshelf); -
issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp
r4919 r4983 34 34 if (iomodel->dim==3){ 35 35 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 36 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");37 36 } 38 37 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); … … 55 54 xfree((void**)&iomodel->gridonbed); 56 55 xfree((void**)&iomodel->gridonsurface); 57 xfree((void**)&iomodel->uppernodes);58 56 xfree((void**)&iomodel->gridonicesheet); 59 57 xfree((void**)&iomodel->gridoniceshelf); -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
r4919 r4983 42 42 if (iomodel->dim==3){ 43 43 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 44 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");45 44 } 46 45 … … 61 60 xfree((void**)&iomodel->gridoniceshelf); 62 61 xfree((void**)&iomodel->deadgrids); 63 xfree((void**)&iomodel->uppernodes);64 62 65 63 cleanup_and_return: -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp
r4919 r4983 37 37 if (iomodel->dim==3){ 38 38 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 39 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");40 39 } 41 40 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); … … 62 61 xfree((void**)&iomodel->gridonsurface); 63 62 xfree((void**)&iomodel->gridonhutter); 64 xfree((void**)&iomodel->uppernodes);65 63 xfree((void**)&iomodel->gridonicesheet); 66 64 xfree((void**)&iomodel->gridoniceshelf); -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp
r4919 r4983 37 37 /*First fetch data: */ 38 38 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 39 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");40 39 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 41 40 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 59 58 xfree((void**)&iomodel->gridonbed); 60 59 xfree((void**)&iomodel->gridonsurface); 61 xfree((void**)&iomodel->uppernodes);62 60 xfree((void**)&iomodel->gridonstokes); 63 61 xfree((void**)&iomodel->borderstokes); -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp
r4919 r4983 36 36 /*First fetch data: */ 37 37 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 38 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");39 38 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); 40 39 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface"); … … 56 55 xfree((void**)&iomodel->gridonbed); 57 56 xfree((void**)&iomodel->gridonsurface); 58 xfree((void**)&iomodel->uppernodes);59 57 xfree((void**)&iomodel->gridonicesheet); 60 58 xfree((void**)&iomodel->gridoniceshelf); -
issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp
r4919 r4983 34 34 if (iomodel->dim==3){ 35 35 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 36 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");37 36 } 38 37 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); … … 55 54 xfree((void**)&iomodel->gridonbed); 56 55 xfree((void**)&iomodel->gridonsurface); 57 xfree((void**)&iomodel->uppernodes);58 56 xfree((void**)&iomodel->gridonicesheet); 59 57 xfree((void**)&iomodel->gridoniceshelf); -
issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
r4919 r4983 41 41 if (iomodel->dim==3){ 42 42 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 43 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");44 43 } 45 44 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements"); … … 90 89 xfree((void**)&iomodel->gridonbed); 91 90 xfree((void**)&iomodel->gridonsurface); 92 xfree((void**)&iomodel->uppernodes);93 91 xfree((void**)&iomodel->gridonicesheet); 94 92 xfree((void**)&iomodel->gridoniceshelf); -
issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp
r4919 r4983 34 34 if (iomodel->dim==3){ 35 35 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 36 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");37 36 } 38 37 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); … … 55 54 xfree((void**)&iomodel->gridonbed); 56 55 xfree((void**)&iomodel->gridonsurface); 57 xfree((void**)&iomodel->uppernodes);58 56 xfree((void**)&iomodel->gridonicesheet); 59 57 xfree((void**)&iomodel->gridoniceshelf); -
issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp
r4919 r4983 34 34 if (iomodel->dim==3){ 35 35 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids"); 36 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");37 36 } 38 37 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed"); … … 55 54 xfree((void**)&iomodel->gridonbed); 56 55 xfree((void**)&iomodel->gridonsurface); 57 xfree((void**)&iomodel->uppernodes);58 56 xfree((void**)&iomodel->gridonicesheet); 59 57 xfree((void**)&iomodel->gridoniceshelf); -
issm/trunk/src/c/modules/modules.h
r4969 r4983 78 78 #include "./UpdateGeometryx/UpdateGeometryx.h" 79 79 #include "./UpdateVertexPositionsx/UpdateVertexPositionsx.h" 80 #include "./VecExtrudex/VecExtrudex.h"81 80 #include "./VerticesDofx/VerticesDofx.h" 82 81 -
issm/trunk/src/c/objects/Elements/Penta.cpp
r4978 r4983 5632 5632 } 5633 5633 /*}}}*/ 5634 /*FUNCTION Penta::VecExtrude {{{1*/5635 void Penta::VecExtrude(Vec vector,double* vector_serial,int iscollapsed){5636 5637 /* node data: */5638 int i;5639 Node* node=NULL;5640 int extrude=0;5641 5642 /*inputs: */5643 bool collapse;5644 bool onbed;5645 5646 /*retrieve inputs :*/5647 inputs->GetParameterValue(&collapse,CollapseEnum);5648 inputs->GetParameterValue(&onbed,ElementOnBedEnum);5649 5650 /*Figure out if we should extrude for this element: */5651 if (iscollapsed){5652 /*From higher level, we are told to extrude only elements that have the collapse flag on: */5653 if (collapse)extrude=1;5654 else extrude=0;5655 }5656 else{5657 /*From higher level, we are told to extrude all elements: */5658 extrude=1;5659 }5660 5661 /*Now, extrusion starts from the bed on, so double check this element is on5662 * the bedrock: */5663 if(onbed==0)extrude=0;5664 5665 /*Go on and extrude vector: */5666 if (extrude){5667 5668 /* node data: */5669 int dof1;5670 double vectorel;5671 5672 /*this penta is a collapsed macayeal. For each node on the base of this penta,5673 * we grab the vector. Once we know the vector, we follow the upper nodes,5674 * inserting the same vector value into vector, until we reach the surface: */5675 for(i=0;i<3;i++){5676 5677 node=nodes[i]; //base nodes5678 dof1=node->GetDofList1();5679 5680 /*get vector for this base node: */5681 vectorel=vector_serial[dof1];5682 5683 //go throvectorn all nodes which sit on top of this node, until we reach the surface,5684 //and plvector vector in vector5685 for(;;){5686 5687 dof1=node->GetDofList1();5688 VecSetValues(vector,1,&dof1,&vectorel,INSERT_VALUES);5689 5690 if (node->IsOnSurface())break;5691 /*get next node: */5692 node=node->GetUpperNode();5693 }5694 }5695 }5696 }5697 /*}}}*/ -
issm/trunk/src/c/objects/Elements/Penta.h
r4978 r4983 175 175 Tria* SpawnTria(int g0, int g1, int g2); 176 176 void SurfaceNormal(double* surface_normal, double xyz_list[3][3]); 177 void VecExtrude(Vec vector,double* vector_serial,int iscollapsed);178 177 /*}}}*/ 179 178 }; -
issm/trunk/src/c/objects/IoModel.cpp
r4919 r4983 44 44 xfree((void**)&this->elements2d); 45 45 xfree((void**)&this->deadgrids); 46 xfree((void**)&this->uppernodes);47 46 xfree((void**)&this->upperelements); 48 47 xfree((void**)&this->lowerelements); … … 243 242 this->deadgrids=NULL; 244 243 this->numlayers=0; 245 this->uppernodes=NULL;246 244 this->upperelements=NULL; 247 245 this->lowerelements=NULL; -
issm/trunk/src/c/objects/IoModel.h
r4919 r4983 39 39 double* deadgrids; 40 40 int numlayers; 41 double* uppernodes;42 41 double* upperelements; 43 42 double* lowerelements; -
issm/trunk/src/c/objects/Node.cpp
r4907 r4983 24 24 this->inputs=NULL; 25 25 this->hvertex=NULL; 26 this->hupper_node=NULL;27 26 return; 28 27 } 29 28 /*}}}*/ 30 /*FUNCTION Node::Node(int id, int vertex_id, int uppernode_id, intnumdofs, NodeProperties*) {{{1*/31 Node::Node(int node_id,int node_sid, int node_vertex_id, int node_ upper_node_id, int node_numdofs):29 /*FUNCTION Node::Node(int id, int vertex_id, int numdofs, NodeProperties*) {{{1*/ 30 Node::Node(int node_id,int node_sid, int node_vertex_id, int node_numdofs): 32 31 indexing(node_numdofs){ 33 32 … … 35 34 this->sid=node_sid; 36 35 this->inputs=new Inputs(); 37 38 36 this->hvertex=new Hook(&node_vertex_id,1); 39 this->hupper_node=new Hook(&node_upper_node_id,1); 40 41 } 42 /*}}}*/ 43 /*FUNCTION Node::Node(int id, DofIndexing* indexing, Hook* vertex, Hook* uppernode,Inputs* inputs,int analysis_type){{{1*/ 44 Node::Node(int node_id,int node_sid, DofIndexing* node_indexing, Hook* node_vertex, Hook* node_upper_node,Inputs* node_inputs,int analysis_type): 37 38 } 39 /*}}}*/ 40 /*FUNCTION Node::Node(int id, DofIndexing* indexing, Hook* vertex, Inputs* inputs,int analysis_type){{{1*/ 41 Node::Node(int node_id,int node_sid, DofIndexing* node_indexing, Hook* node_vertex,Inputs* node_inputs,int analysis_type): 45 42 indexing(node_indexing), 46 hvertex(node_vertex) ,47 hupper_node(node_upper_node){48 49 50 51 52 53 54 55 56 57 58 59 43 hvertex(node_vertex) 44 { 45 46 /*all the initialization has been done by the initializer, just fill in the id: */ 47 this->id=node_id; 48 this->sid=node_sid; 49 this->analysis_type=analysis_type; 50 51 if(node_inputs){ 52 this->inputs=(Inputs*)node_inputs->Copy(); 53 } 54 else{ 55 this->inputs=new Inputs(); 56 } 60 57 } 61 58 /*}}}*/ … … 66 63 int k; 67 64 int numdofs; 68 int upper_node_id;69 65 70 66 /*id: */ … … 77 73 this->indexing.Init(numdofs); 78 74 79 /*hooks: */ 80 if (iomodel->dim==3){ 81 if (isnan(iomodel->uppernodes[io_index])){ 82 upper_node_id=this->id; //nodes on surface do not have upper nodes, only themselves. 83 } 84 else{ 85 upper_node_id=(int)iomodel->uppernodes[io_index]; 86 } 87 } 88 else{ 89 /*If we are running 2d, upper_node does not mean much. Just point towards itself!:*/ 90 upper_node_id=this->id; 91 } 92 75 /*Hooks*/ 93 76 this->hvertex=new Hook(&vertex_id,1); //node id is the same as the vertex id, continuous galerkin! 94 this->hupper_node=new Hook(&upper_node_id,1);95 77 96 78 //intialize inputs, and add as many inputs per element as requested: … … 178 160 delete inputs; 179 161 delete hvertex; 180 delete hupper_node;181 162 return; 182 163 } … … 193 174 indexing.Echo(); 194 175 printf(" hvertex: not displayed\n"); 195 printf(" hupper_node: not displayed\n");196 176 printf(" inputs: %p\n",inputs); 197 177 … … 209 189 printf("Vertex:\n"); 210 190 hvertex->DeepEcho(); 211 printf("Upper node:\n");212 //Do not Deepecho the upper_node otherwise DeepEcho will go crazy!213 hupper_node->Echo();214 191 printf(" inputs\n"); 215 192 inputs->DeepEcho(); … … 252 229 indexing.Marshall(&marshalled_dataset); 253 230 hvertex->Marshall(&marshalled_dataset); 254 hupper_node->Marshall(&marshalled_dataset);255 231 256 232 /*Marshall inputs: */ … … 274 250 indexing.MarshallSize()+ 275 251 hvertex->MarshallSize()+ 276 hupper_node->MarshallSize()+277 252 inputs->MarshallSize()+ 278 253 sizeof(analysis_type)+ … … 298 273 indexing.Demarshall(&marshalled_dataset); 299 274 hvertex=new Hook(); hvertex->Demarshall(&marshalled_dataset); 300 hupper_node=new Hook(); hupper_node->Demarshall(&marshalled_dataset);301 275 302 276 /*demarshall inputs: */ … … 318 292 Object* Node::copy() { 319 293 320 return new Node(this->id,this->sid,&this->indexing, this->hvertex,this-> hupper_node,this->inputs,this->analysis_type);294 return new Node(this->id,this->sid,&this->indexing, this->hvertex,this->inputs,this->analysis_type); 321 295 322 296 } … … 333 307 * datasets, using internal ids and offsets hidden in hooks: */ 334 308 hvertex->configure(verticesin); 335 hupper_node->configure(nodesin);336 309 337 310 } … … 344 317 * datasets, using internal ids and offsets hidden in hooks: */ 345 318 hvertex->configure(verticesin); 346 hupper_node->configure(nodesin);347 319 348 320 } … … 502 474 } 503 475 /*}}}*/ 504 /*FUNCTION Node::VecExtrude {{{1*/505 void Node::VecExtrude(Vec vector,double* vector_serial){506 507 /* node data: */508 int numberofdofspernode;509 Node* node=NULL;510 int i;511 512 bool onbed;513 514 /*recover parameters: */515 inputs->GetParameterValue(&onbed,NodeOnBedEnum);516 517 /*Is this node on bed? :*/518 if (onbed){519 520 /* node data: */521 int dof1;522 double vectorel;523 524 //initilaize node and get dof1525 node=this;526 dof1=node->GetVertexDof();527 528 /*get vector for this base node: */529 vectorel=vector_serial[dof1];530 531 //go throvectorn all nodes which sit on top of this node, until we reach the surface,532 //and plvector vector in vector533 for(;;){534 535 dof1=node->GetVertexDof();536 VecSetValues(vector,1,&dof1,&vectorel,INSERT_VALUES);537 538 if (node->IsOnSurface())break;539 /*get next node: */540 node=node->GetUpperNode();541 }542 }543 }544 /*}}}*/545 476 /*FUNCTION Node::FreezeDof{{{1*/ 546 477 void Node::FreezeDof(int dof){ … … 573 504 vertex=(Vertex*)hvertex->delivers(); 574 505 return vertex->sigma; 575 }576 /*}}}*/577 /*FUNCTION Node::GetUpperNode {{{1*/578 Node* Node::GetUpperNode(){579 Node* upper_node=NULL;580 upper_node=(Node*)hupper_node->delivers();581 return upper_node;582 506 } 583 507 /*}}}*/ -
issm/trunk/src/c/objects/Node.h
r4907 r4983 28 28 DofIndexing indexing; 29 29 Hook* hvertex; 30 Hook* hupper_node;31 30 Inputs* inputs; //properties of this node 32 31 int analysis_type; … … 36 35 /*Node constructors, destructors {{{1*/ 37 36 Node(); 38 Node(int id,int sid, int vertex_id, int upper_node_id,int numberofdofs);39 Node(int id,int sid, DofIndexing* indexing, Hook* vertex, Hook* upper_node,Inputs* inputs,int analysis_type);37 Node(int id,int sid, int vertex_id,int numberofdofs); 38 Node(int id,int sid, DofIndexing* indexing, Hook* vertex, Inputs* inputs,int analysis_type); 40 39 Node(int node_id,int node_sid, int vertex_id,int io_index, IoModel* iomodel,int analysis_type); 41 40 ~Node(); … … 84 83 double GetZ(); 85 84 double GetSigma(); 86 Node* GetUpperNode();87 85 int IsOnBed(); 88 86 int IsOnSurface(); … … 90 88 int IsOnShelf(); 91 89 int IsOnSheet(); 92 void VecExtrude(Vec vector,double* vector_serial);93 90 /*}}}*/ 94 91 /*Dof Object routines {{{1*/ -
issm/trunk/src/m/classes/public/marshall.m
r4739 r4983 43 43 WriteData(fid,md.gridonpattyn,'Mat','gridonpattyn'); 44 44 end 45 WriteData(fid,md.uppergrids,'Mat','uppergrids');46 45 WriteData(fid,md.upperelements,'Mat','upperelements'); 47 46 WriteData(fid,md.lowerelements,'Mat','lowerelements');
Note:
See TracChangeset
for help on using the changeset viewer.