Changeset 9370
- Timestamp:
- 08/22/11 15:14:19 (14 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 31 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp
r9362 r9370 36 36 37 37 /*First fetch data: */ 38 iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum); 39 iomodel->FetchData(&iomodel->nodeonsurface,NULL,NULL,NodeOnSurfaceEnum); 40 iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum); 41 iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum); 42 iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum); 43 iomodel->FetchData(&iomodel->nodeonwater,NULL,NULL,NodeOnWaterEnum); 38 iomodel->FetchData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum); 44 39 45 40 for (i=0;i<numberofvertices;i++){ 46 47 41 if(iomodel->my_vertices[i]){ 48 42 … … 54 48 55 49 /*Clean fetched data: */ 56 xfree((void**)&iomodel->nodeonbed); 57 xfree((void**)&iomodel->nodeonsurface); 58 xfree((void**)&iomodel->nodeonicesheet); 59 xfree((void**)&iomodel->nodeonwater); 60 xfree((void**)&iomodel->nodeoniceshelf); 61 xfree((void**)&iomodel->vertices_type); 50 iomodel->DeleteData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum); 62 51 63 52 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp
r9362 r9370 21 21 /*Fetch data needed: */ 22 22 iomodel->constants->FindParam(&dim,DimEnum); 23 iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);24 23 iomodel->constants->FindParam(&numberofelements,NumberOfElementsEnum); 24 iomodel->FetchData(1,ElementsEnum); 25 25 26 26 /*Update elements: */ … … 44 44 45 45 /*Free data: */ 46 xfree((void**)&iomodel->elements); 47 46 iomodel->DeleteData(1,ElementsEnum); 48 47 } -
issm/trunk/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
r9356 r9370 15 15 16 16 int i; 17 Parameters * parameters=NULL;18 bool control_analysis =false;17 Parameters *parameters = NULL; 18 bool control_analysis = false; 19 19 int nsteps; 20 20 int num_control_type; 21 21 int num_cm_responses; 22 int* control_type=NULL; 22 int *control_type = NULL; 23 double *cm_responses = NULL; 24 double *cm_jump = NULL; 25 double *optscal = NULL; 26 double *maxiter = NULL; 23 27 24 28 /*Get parameters: */ … … 29 33 30 34 if(control_analysis){ 31 32 /*What control type?*/33 iomodel->FetchData(&control_type,&num_control_type,NULL,ControlTypeEnum);34 parameters->AddObject(new IntVecParam(ControlTypeEnum,control_type,num_control_type));35 xfree((void**)&control_type);36 35 37 36 /*What solution type?*/ … … 44 43 45 44 /*Now, recover fit, optscal and maxiter as vectors: */ 46 iomodel->FetchData(&iomodel->cm_responses,&nsteps,&num_control_type,CmResponsesEnum); 47 iomodel->FetchData(&iomodel->cm_jump,&nsteps,&num_cm_responses,CmJumpEnum); 48 iomodel->FetchData(&iomodel->optscal,NULL,NULL,OptscalEnum); 49 iomodel->FetchData(&iomodel->maxiter,NULL,NULL,MaxiterEnum); 45 iomodel->FetchData(&control_type,&num_control_type,NULL,ControlTypeEnum); 46 iomodel->FetchData(&cm_responses,&nsteps,&num_control_type,CmResponsesEnum); 47 iomodel->FetchData(&cm_jump,&nsteps,&num_cm_responses,CmJumpEnum); 48 iomodel->FetchData(&optscal,NULL,NULL,OptscalEnum); 49 iomodel->FetchData(&maxiter,NULL,NULL,MaxiterEnum); 50 50 51 parameters->AddObject(new DoubleMatParam(OptscalEnum,iomodel->optscal,nsteps,num_control_type)); 52 parameters->AddObject(new DoubleMatParam(CmResponsesEnum,iomodel->cm_responses,nsteps,num_cm_responses)); 53 parameters->AddObject(new DoubleVecParam(CmJumpEnum,iomodel->cm_jump,nsteps)); 54 parameters->AddObject(new DoubleVecParam(MaxiterEnum,iomodel->maxiter,nsteps)); 51 parameters->AddObject(new IntVecParam(ControlTypeEnum,control_type,num_control_type)); 52 parameters->AddObject(new DoubleMatParam(OptscalEnum,optscal,nsteps,num_control_type)); 53 parameters->AddObject(new DoubleMatParam(CmResponsesEnum,cm_responses,nsteps,num_cm_responses)); 54 parameters->AddObject(new DoubleVecParam(CmJumpEnum,cm_jump,nsteps)); 55 parameters->AddObject(new DoubleVecParam(MaxiterEnum,maxiter,nsteps)); 55 56 56 xfree((void**)&iomodel->cm_responses); 57 xfree((void**)&iomodel->cm_jump); 58 xfree((void**)&iomodel->optscal); 59 xfree((void**)&iomodel->maxiter); 57 xfree((void**)&control_type); 58 xfree((void**)&cm_responses); 59 xfree((void**)&cm_jump); 60 xfree((void**)&optscal); 61 xfree((void**)&maxiter); 60 62 } 61 63 -
issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r9362 r9370 35 35 36 36 /*Fetch data needed: */ 37 iomodel->FetchData( &iomodel->elements,NULL,NULL,ElementsEnum);37 iomodel->FetchData(1,ElementsEnum); 38 38 iomodel->FetchDataToInput(elements,VxObsEnum); 39 39 iomodel->FetchDataToInput(elements,VyObsEnum); 40 40 iomodel->FetchDataToInput(elements,ThicknessObsEnum); 41 41 42 iomodel->FetchData(&iomodel->control_type,NULL,NULL,ControlTypeEnum); 43 iomodel->FetchData(&iomodel->weights,NULL,NULL,WeightsEnum); 44 iomodel->FetchData(&iomodel->cm_min,NULL,NULL,CmMinEnum); 45 iomodel->FetchData(&iomodel->cm_max,NULL,NULL,CmMaxEnum); 42 iomodel->FetchData(4,ControlTypeEnum,WeightsEnum,CmMinEnum,CmMaxEnum); 46 43 for(i=0;i<num_control_type;i++){ 47 switch((int)iomodel->control_type[i]){ 48 case DhdtEnum: 49 iomodel->FetchData(&iomodel->dhdt,NULL,NULL,DhdtEnum); 50 break; 51 case VxEnum: 52 iomodel->FetchData(&iomodel->vx,NULL,NULL,VxEnum); 53 break; 54 case VyEnum: 55 iomodel->FetchData(&iomodel->vy,NULL,NULL,VyEnum); 56 break; 57 case DragCoefficientEnum: 58 iomodel->FetchData(&iomodel->drag_coefficient,NULL,NULL,DragCoefficientEnum); 59 break; 60 case RheologyBbarEnum: 61 iomodel->FetchData(&iomodel->rheology_B,NULL,NULL,RheologyBEnum); 62 break; 63 default: 64 _error_("Control %s not implemented yet",EnumToStringx((int)iomodel->control_type[i])); 44 switch((int)iomodel->f(ControlTypeEnum)[i]){ 45 case DhdtEnum: iomodel->FetchData(1,DhdtEnum); break; 46 case VxEnum: iomodel->FetchData(1,VxEnum); break; 47 case VyEnum: iomodel->FetchData(1,VyEnum); break; 48 case DragCoefficientEnum: iomodel->FetchData(1,DragCoefficientEnum); break; 49 case RheologyBbarEnum: iomodel->FetchData(1,RheologyBEnum); break; 50 default: _error_("Control %s not implemented yet",EnumToStringx((int)iomodel->f(ControlTypeEnum)[i])); 65 51 } 66 52 } … … 80 66 81 67 /*Free data: */ 82 xfree((void**)&iomodel->elements); 83 xfree((void**)&iomodel->weights); 84 xfree((void**)&iomodel->cm_min); 85 xfree((void**)&iomodel->cm_max); 86 xfree((void**)&iomodel->control_type); 87 xfree((void**)&iomodel->dhdt); 88 xfree((void**)&iomodel->vx); 89 xfree((void**)&iomodel->vy); 90 xfree((void**)&iomodel->drag_coefficient); 91 xfree((void**)&iomodel->rheology_B); 68 iomodel->DeleteData(1+4+5,ElementsEnum,ControlTypeEnum,WeightsEnum,CmMinEnum,CmMaxEnum,DhdtEnum,VxEnum,VyEnum,DragCoefficientEnum,RheologyBEnum); 92 69 } -
issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r9362 r9370 17 17 /*Intermediary*/ 18 18 int i,j,k,n; 19 int 20 int 21 int 19 int dim; 20 int numberofelements; 21 int numberofvertices; 22 22 23 23 /*DataSets: */ … … 43 43 44 44 /*Fetch data needed: */ 45 iomodel->FetchData(9,ElementsEnum,ElementconnectivityEnum,UpperelementsEnum,LowerelementsEnum,RheologyBEnum,RheologyNEnum,ControlTypeEnum,CmMinEnum,CmMaxEnum); 45 iomodel->FetchData(9,ElementsEnum,ElementconnectivityEnum,UpperelementsEnum,LowerelementsEnum, 46 RheologyBEnum,RheologyNEnum,ControlTypeEnum,CmMinEnum,CmMaxEnum); 46 47 47 48 /*Create elements and materials: */ … … 60 61 61 62 /*Free data: */ 62 iomodel->DeleteData(9,ElementsEnum,ElementconnectivityEnum,UpperelementsEnum,LowerelementsEnum,RheologyBEnum,RheologyNEnum,ControlTypeEnum,CmMinEnum,CmMaxEnum); 63 iomodel->DeleteData(9,ElementsEnum,ElementconnectivityEnum,UpperelementsEnum,LowerelementsEnum, 64 RheologyBEnum,RheologyNEnum,ControlTypeEnum,CmMinEnum,CmMaxEnum); 63 65 64 66 /*Add new constrant material property tgo materials, at the end: */ -
issm/trunk/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
r9362 r9370 27 27 /*output*/ 28 28 int* connectivity=NULL; 29 30 /*Return if connectivity already present*/ 31 if(iomodel->singlenodetoelementconnectivity) return; 29 32 30 33 /*Fetch parameters: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
r9362 r9370 14 14 15 15 /*Intermediary*/ 16 int i,j; 17 int count; 18 double yts; 19 double g; 20 double rho_ice; 21 double stokesreconditioning; 22 bool isstokes,ismacayealpattyn; 16 int i,j; 17 int count; 18 double yts; 19 double g; 20 double rho_ice; 21 double stokesreconditioning; 22 bool isstokes,ismacayealpattyn; 23 double *spcvx = NULL; 24 double *spcvy = NULL; 25 double *spcvz = NULL; 26 double *nodeonhutter = NULL; 27 double *nodeonmacayeal = NULL; 28 double *nodeonpattyn = NULL; 29 double *nodeonstokes = NULL; 30 double *vertices_type = NULL; 31 double *surface = NULL; 32 double *z = NULL; 23 33 24 34 /*Output*/ … … 46 56 47 57 /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */ 48 if (!ismacayealpattyn & !isstokes)goto cleanup_and_return; 58 if (!ismacayealpattyn & !isstokes){ 59 *pconstraints=constraints; 60 return; 61 } 49 62 50 63 /*Constraints: fetch data: */ 51 iomodel->FetchData(& iomodel->spcvx,NULL,NULL,SpcvxEnum);52 iomodel->FetchData(& iomodel->spcvy,NULL,NULL,SpcvyEnum);53 iomodel->FetchData(& iomodel->spcvz,NULL,NULL,SpcvzEnum);54 iomodel->FetchData(& iomodel->nodeonhutter,NULL,NULL,NodeOnHutterEnum);55 iomodel->FetchData(& iomodel->nodeonmacayeal,NULL,NULL,NodeOnMacayealEnum);56 if(dim==3)iomodel->FetchData(& iomodel->nodeonpattyn,NULL,NULL,NodeOnPattynEnum);57 if(dim==3)iomodel->FetchData(& iomodel->nodeonstokes,NULL,NULL,NodeOnStokesEnum);58 iomodel->FetchData(& iomodel->vertices_type,NULL,NULL,VerticesTypeEnum);59 iomodel->FetchData(& iomodel->surface,NULL,NULL,SurfaceEnum);60 iomodel->FetchData(& iomodel->z,NULL,NULL,ZEnum);64 iomodel->FetchData(&spcvx,NULL,NULL,SpcvxEnum); 65 iomodel->FetchData(&spcvy,NULL,NULL,SpcvyEnum); 66 iomodel->FetchData(&spcvz,NULL,NULL,SpcvzEnum); 67 iomodel->FetchData(&nodeonhutter,NULL,NULL,NodeOnHutterEnum); 68 iomodel->FetchData(&nodeonmacayeal,NULL,NULL,NodeOnMacayealEnum); 69 if(dim==3)iomodel->FetchData(&nodeonpattyn,NULL,NULL,NodeOnPattynEnum); 70 if(dim==3)iomodel->FetchData(&nodeonstokes,NULL,NULL,NodeOnStokesEnum); 71 iomodel->FetchData(&vertices_type,NULL,NULL,VerticesTypeEnum); 72 iomodel->FetchData(&surface,NULL,NULL,SurfaceEnum); 73 iomodel->FetchData(&z,NULL,NULL,ZEnum); 61 74 62 75 /*Initialize counter: */ … … 68 81 69 82 /*Start with adding spcs of coupling: zero at the border macayeal/pattyn for the appropriate dofs*/ 70 if ((int) iomodel->vertices_type[i]==MacAyealPattynApproximationEnum){83 if ((int)vertices_type[i]==MacAyealPattynApproximationEnum){ 71 84 /*If grionmacayeal, spc pattyn dofs: 3 & 4*/ 72 if ((int) iomodel->nodeonpattyn[i]){85 if ((int)nodeonpattyn[i]){ 73 86 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 74 87 count++; 75 88 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 76 89 count++; 77 if (!isnan( iomodel->spcvx[i])){78 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3, iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.79 count++; 80 } 81 if (!isnan( iomodel->spcvy[i])){82 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4, iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.83 count++; 84 } 85 86 } 87 else if ((int) iomodel->nodeonmacayeal[i]){90 if (!isnan(spcvx[i])){ 91 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 92 count++; 93 } 94 if (!isnan(spcvy[i])){ 95 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 96 count++; 97 } 98 99 } 100 else if ((int)nodeonmacayeal[i]){ 88 101 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 89 102 count++; 90 103 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 91 104 count++; 92 if (!isnan( iomodel->spcvx[i])){93 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1, iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.94 count++; 95 } 96 if (!isnan( iomodel->spcvy[i])){97 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2, iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.105 if (!isnan(spcvx[i])){ 106 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 107 count++; 108 } 109 if (!isnan(spcvy[i])){ 110 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 98 111 count++; 99 112 } … … 103 116 } 104 117 /*Also add spcs of coupling: zero at the border pattyn/stokes for the appropriate dofs*/ 105 else if ((int) iomodel->vertices_type[i]==PattynStokesApproximationEnum){118 else if ((int)vertices_type[i]==PattynStokesApproximationEnum){ 106 119 /*If grion,pattyn spc stokes dofs: 3 4 & 5*/ 107 if ((int) iomodel->nodeonpattyn[i]){120 if ((int)nodeonpattyn[i]){ 108 121 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 109 122 count++; … … 112 125 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 113 126 count++; 114 if (!isnan( iomodel->spcvx[i])){115 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1, iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.116 count++; 117 } 118 if (!isnan( iomodel->spcvy[i])){119 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2, iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.120 count++; 121 } 122 123 } 124 else if ((int) iomodel->nodeonstokes[i]){ //spc pattyn nodes: 1 & 2127 if (!isnan(spcvx[i])){ 128 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 129 count++; 130 } 131 if (!isnan(spcvy[i])){ 132 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 133 count++; 134 } 135 136 } 137 else if ((int)nodeonstokes[i]){ //spc pattyn nodes: 1 & 2 125 138 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 126 139 count++; 127 140 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 128 141 count++; 129 if (!isnan( iomodel->spcvx[i])){130 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3, iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.131 count++; 132 } 133 if (!isnan( iomodel->spcvy[i])){134 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4, iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.135 count++; 136 } 137 if (!isnan( iomodel->spcvz[i])){138 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5, iomodel->spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.142 if (!isnan(spcvx[i])){ 143 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 144 count++; 145 } 146 if (!isnan(spcvy[i])){ 147 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 148 count++; 149 } 150 if (!isnan(spcvz[i])){ 151 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 139 152 count++; 140 153 } … … 143 156 } 144 157 /*Also add spcs of coupling: zero at the border pattyn/stokes for the appropriate dofs*/ 145 else if ((int) iomodel->vertices_type[i]==MacAyealStokesApproximationEnum){158 else if ((int)vertices_type[i]==MacAyealStokesApproximationEnum){ 146 159 /*If grion,pattyn spc stokes dofs: 3 4 & 5*/ 147 if ((int) iomodel->nodeonmacayeal[i]){160 if ((int)nodeonmacayeal[i]){ 148 161 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 149 162 count++; … … 152 165 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 153 166 count++; 154 if (!isnan( iomodel->spcvx[i])){155 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1, iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.156 count++; 157 } 158 if (!isnan( iomodel->spcvy[i])){159 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2, iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.160 count++; 161 } 162 163 } 164 else if ((int) iomodel->nodeonstokes[i]){ //spc macayeal nodes: 1 & 2167 if (!isnan(spcvx[i])){ 168 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 169 count++; 170 } 171 if (!isnan(spcvy[i])){ 172 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 173 count++; 174 } 175 176 } 177 else if ((int)nodeonstokes[i]){ //spc macayeal nodes: 1 & 2 165 178 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 166 179 count++; 167 180 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 168 181 count++; 169 if (!isnan( iomodel->spcvx[i])){170 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3, iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.171 count++; 172 } 173 if (!isnan( iomodel->spcvy[i])){174 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4, iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.175 count++; 176 } 177 if (!isnan( iomodel->spcvz[i])){178 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5, iomodel->spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.182 if (!isnan(spcvx[i])){ 183 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 184 count++; 185 } 186 if (!isnan(spcvy[i])){ 187 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 188 count++; 189 } 190 if (!isnan(spcvz[i])){ 191 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 179 192 count++; 180 193 } … … 184 197 /*Now add the regular spcs*/ 185 198 else{ 186 if (!isnan( iomodel->spcvx[i])){187 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1, iomodel->spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.188 count++; 189 } 190 else if ( iomodel->nodeonhutter[i]){199 if (!isnan(spcvx[i])){ 200 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 201 count++; 202 } 203 else if (nodeonhutter[i]){ 191 204 constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,DiagnosticHorizAnalysisEnum)); 192 205 count++; 193 206 } 194 207 195 if (!isnan( iomodel->spcvy[i])){196 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2, iomodel->spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy.197 count++; 198 } 199 else if ( iomodel->nodeonhutter[i]){208 if (!isnan(spcvy[i])){ 209 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy. 210 count++; 211 } 212 else if (nodeonhutter[i]){ 200 213 constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,DiagnosticHorizAnalysisEnum)); 201 214 count++; 202 215 } 203 216 204 if (!isnan( iomodel->spcvz[i]) && ((int)iomodel->vertices_type[i]==StokesApproximationEnum || ((int)iomodel->vertices_type[i]==NoneApproximationEnum))){205 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3, iomodel->spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy206 count++; 207 } 208 if ((int) iomodel->vertices_type[i]==NoneApproximationEnum){209 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,g*rho_ice*( iomodel->surface[i]-iomodel->z[i])/stokesreconditioning,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy217 if (!isnan(spcvz[i]) && ((int)vertices_type[i]==StokesApproximationEnum || ((int)vertices_type[i]==NoneApproximationEnum))){ 218 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 219 count++; 220 } 221 if ((int)vertices_type[i]==NoneApproximationEnum){ 222 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,g*rho_ice*(surface[i]-z[i])/stokesreconditioning,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 210 223 count++; 211 224 } … … 215 228 216 229 /*Free data: */ 217 xfree((void**)&iomodel->spcvx); 218 xfree((void**)&iomodel->spcvy); 219 xfree((void**)&iomodel->spcvz); 220 xfree((void**)&iomodel->nodeonhutter); 221 xfree((void**)&iomodel->nodeonmacayeal); 222 xfree((void**)&iomodel->nodeonpattyn); 223 xfree((void**)&iomodel->nodeonstokes); 224 xfree((void**)&iomodel->vertices_type); 225 xfree((void**)&iomodel->surface); 226 xfree((void**)&iomodel->z); 227 228 cleanup_and_return: 230 xfree((void**)&spcvx); 231 xfree((void**)&spcvy); 232 xfree((void**)&spcvz); 233 xfree((void**)&nodeonhutter); 234 xfree((void**)&nodeonmacayeal); 235 xfree((void**)&nodeonpattyn); 236 xfree((void**)&nodeonstokes); 237 xfree((void**)&vertices_type); 238 xfree((void**)&surface); 239 xfree((void**)&z); 229 240 230 241 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
r9362 r9370 29 29 bool ismacayealpattyn,isstokes; 30 30 int numpenalties,numberofpressureloads,numrifts; 31 double *pressureload = NULL; 32 double *elements_type = NULL; 33 double *thickness = NULL; 34 double *bed = NULL; 35 double *nodeoniceshelf = NULL; 36 double *riftinfo = NULL; 37 double *surface = NULL; 38 double *nodeonbed = NULL; 39 double *nodeonstokes = NULL; 40 double *nodeonicesheet = NULL; 41 double *elements = NULL; 42 double *spcvx = NULL; 43 double *spcvy = NULL; 44 double *spcvz = NULL; 45 double *vertices_type = NULL; 46 double *penalties = NULL; 47 31 48 32 49 /*Fetch parameters: */ … … 43 60 44 61 /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */ 45 if (!ismacayealpattyn & !isstokes)goto cleanup_and_return; 62 if (!ismacayealpattyn & !isstokes){ 63 *ploads=loads; 64 return; 65 } 46 66 47 67 /*Create pressure loads as boundary conditions. Pay attention to the partitioning if we are running in parallel (the nodes 48 68 * referenced by a certain load must belong to the cluster node): */ 49 iomodel->FetchData(& iomodel->pressureload,&numberofpressureloads,NULL,PressureloadEnum);50 iomodel->FetchData(& iomodel->elements_type,NULL,NULL,ElementsTypeEnum);51 iomodel->FetchData(& iomodel->thickness,NULL,NULL,ThicknessEnum);52 iomodel->FetchData(& iomodel->bed,NULL,NULL,BedEnum);69 iomodel->FetchData(&pressureload,&numberofpressureloads,NULL,PressureloadEnum); 70 iomodel->FetchData(&elements_type,NULL,NULL,ElementsTypeEnum); 71 iomodel->FetchData(&thickness,NULL,NULL,ThicknessEnum); 72 iomodel->FetchData(&bed,NULL,NULL,BedEnum); 53 73 54 74 /*Initialize counter: */ … … 61 81 if (dim==2) segment_width=4; 62 82 else segment_width=6; 63 element=(int)(*( iomodel->pressureload+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill)83 element=(int)(*(pressureload+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill) 64 84 65 85 /*Now, if this element is not in the partition, pass: */ … … 67 87 68 88 /*Do not create ice front if Hutter or Stokes elements*/ 69 if ((int)*( iomodel->elements_type+element)==HutterApproximationEnum) continue;89 if ((int)*(elements_type+element)==HutterApproximationEnum) continue; 70 90 71 91 /*Create and add load: */ 72 if ((int)*( iomodel->elements_type+element)==(MacAyealApproximationEnum) && dim==2){92 if ((int)*(elements_type+element)==(MacAyealApproximationEnum) && dim==2){ 73 93 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal2dIceFrontEnum,DiagnosticHorizAnalysisEnum)); 74 94 count++; 75 95 } 76 else if ((int)*( iomodel->elements_type+element)==(MacAyealApproximationEnum) && dim==3){96 else if ((int)*(elements_type+element)==(MacAyealApproximationEnum) && dim==3){ 77 97 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum)); 78 98 count++; 79 99 } 80 else if ((int)*( iomodel->elements_type+element)==(PattynApproximationEnum)){100 else if ((int)*(elements_type+element)==(PattynApproximationEnum)){ 81 101 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,PattynIceFrontEnum,DiagnosticHorizAnalysisEnum)); 82 102 count++; 83 103 } 84 else if ((int)*( iomodel->elements_type+element)==(StokesApproximationEnum)){104 else if ((int)*(elements_type+element)==(StokesApproximationEnum)){ 85 105 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,StokesIceFrontEnum,DiagnosticHorizAnalysisEnum)); 86 106 count++; 87 107 } 88 else if ((int)*( iomodel->elements_type+element)==(MacAyealPattynApproximationEnum)){108 else if ((int)*(elements_type+element)==(MacAyealPattynApproximationEnum)){ 89 109 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum)); 90 110 count++; … … 92 112 count++; 93 113 } 94 else if ((int)*( iomodel->elements_type+element)==(PattynStokesApproximationEnum)){114 else if ((int)*(elements_type+element)==(PattynStokesApproximationEnum)){ 95 115 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,PattynIceFrontEnum,DiagnosticHorizAnalysisEnum)); 96 116 count++; … … 98 118 count++; 99 119 } 100 else if ((int)*( iomodel->elements_type+element)==(MacAyealStokesApproximationEnum)){120 else if ((int)*(elements_type+element)==(MacAyealStokesApproximationEnum)){ 101 121 loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum)); 102 122 count++; … … 107 127 108 128 /*Free data: */ 109 xfree((void**)& iomodel->pressureload);110 xfree((void**)& iomodel->elements_type);111 xfree((void**)& iomodel->thickness);112 xfree((void**)& iomodel->bed);129 xfree((void**)&pressureload); 130 xfree((void**)&elements_type); 131 xfree((void**)&thickness); 132 xfree((void**)&bed); 113 133 114 134 /*create penalties for nodes on the base of icesheet. We must have wb=ub*db/dx+vb*db/dy */ 115 iomodel->FetchData(& iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum);116 iomodel->FetchData(& iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum);117 iomodel->FetchData(& iomodel->nodeonstokes,NULL,NULL,NodeOnStokesEnum);118 iomodel->FetchData(& iomodel->elements,NULL,NULL,ElementsEnum);119 iomodel->FetchData(& iomodel->spcvx,NULL,NULL,SpcvxEnum);120 iomodel->FetchData(& iomodel->spcvy,NULL,NULL,SpcvyEnum);121 iomodel->FetchData(& iomodel->spcvz,NULL,NULL,SpcvzEnum);122 iomodel->FetchData(& iomodel->vertices_type,NULL,NULL,VerticesTypeEnum);135 iomodel->FetchData(&nodeonbed,NULL,NULL,NodeOnBedEnum); 136 iomodel->FetchData(&nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum); 137 iomodel->FetchData(&nodeonstokes,NULL,NULL,NodeOnStokesEnum); 138 iomodel->FetchData(&elements,NULL,NULL,ElementsEnum); 139 iomodel->FetchData(&spcvx,NULL,NULL,SpcvxEnum); 140 iomodel->FetchData(&spcvy,NULL,NULL,SpcvyEnum); 141 iomodel->FetchData(&spcvz,NULL,NULL,SpcvzEnum); 142 iomodel->FetchData(&vertices_type,NULL,NULL,VerticesTypeEnum); 123 143 CreateSingleNodeToElementConnectivity(iomodel); 124 144 … … 127 147 if(iomodel->my_vertices[i]==1 && iomodel->singlenodetoelementconnectivity[i]!=0){ 128 148 129 //if (( iomodel->nodeonbed[i]) && (iomodel->nodeonstokes[i])){130 if (( iomodel->nodeonbed[i]) && (iomodel->nodeonicesheet[i]) && (iomodel->nodeonstokes[i])){149 //if ((nodeonbed[i]) && (nodeonstokes[i])){ 150 if ((nodeonbed[i]) && (nodeonicesheet[i]) && (nodeonstokes[i])){ 131 151 132 152 loads->AddObject(new Pengrid(iomodel->loadcounter+count+1,i,iomodel,DiagnosticHorizAnalysisEnum)); … … 136 156 } 137 157 138 xfree((void**)&iomodel->nodeonbed); 139 xfree((void**)&iomodel->nodeonstokes); 140 xfree((void**)&iomodel->nodeonicesheet); 141 xfree((void**)&iomodel->elements); 142 xfree((void**)&iomodel->spcvx); 143 xfree((void**)&iomodel->spcvy); 144 xfree((void**)&iomodel->spcvz); 145 xfree((void**)&iomodel->vertices_type); 146 xfree((void**)&iomodel->singlenodetoelementconnectivity); 158 xfree((void**)&nodeonbed); 159 xfree((void**)&nodeonstokes); 160 xfree((void**)&nodeonicesheet); 161 xfree((void**)&elements); 162 xfree((void**)&spcvx); 163 xfree((void**)&spcvy); 164 xfree((void**)&spcvz); 165 xfree((void**)&vertices_type); 147 166 148 167 /*Create Penpair for penalties: */ 149 iomodel->FetchData(& iomodel->penalties,&numpenalties,NULL,PenaltiesEnum);168 iomodel->FetchData(&penalties,&numpenalties,NULL,PenaltiesEnum); 150 169 151 170 for(i=0;i<numpenalties;i++){ 152 171 153 if(iomodel->my_vertices[(int) iomodel->penalties[2*i+0]-1]){172 if(iomodel->my_vertices[(int)penalties[2*i+0]-1]){ 154 173 155 174 /*In debugging mode, check that the second node is in the same cpu*/ 156 _assert_(iomodel->my_vertices[(int) iomodel->penalties[2*i+1]-1]);175 _assert_(iomodel->my_vertices[(int)penalties[2*i+1]-1]); 157 176 158 177 /*Get node ids*/ 159 penpair_ids[0]=iomodel->nodecounter+(int) iomodel->penalties[2*i+0];160 penpair_ids[1]=iomodel->nodecounter+(int) iomodel->penalties[2*i+1];178 penpair_ids[0]=iomodel->nodecounter+(int)penalties[2*i+0]; 179 penpair_ids[1]=iomodel->nodecounter+(int)penalties[2*i+1]; 161 180 162 181 /*Create Load*/ … … 167 186 168 187 /*free ressources: */ 169 xfree((void**)& iomodel->penalties);188 xfree((void**)&penalties); 170 189 171 190 /*Create Riffront loads for rifts: */ 172 iomodel->FetchData(&iomodel->riftinfo,&numrifts,NULL,RiftinfoEnum); 173 iomodel->FetchData(&iomodel->thickness,NULL,NULL,ThicknessEnum); 174 iomodel->FetchData(&iomodel->bed,NULL,NULL,BedEnum); 175 iomodel->FetchData(&iomodel->surface,NULL,NULL,SurfaceEnum); 176 iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum); 177 178 191 iomodel->FetchData(&riftinfo,&numrifts,NULL,RiftinfoEnum); 192 iomodel->FetchData(&thickness,NULL,NULL,ThicknessEnum); 193 iomodel->FetchData(&bed,NULL,NULL,BedEnum); 194 iomodel->FetchData(&surface,NULL,NULL,SurfaceEnum); 195 iomodel->FetchData(&nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum); 196 179 197 for(i=0;i<numrifts;i++){ 180 181 if(iomodel->my_elements[(int)*(iomodel->riftinfo+RIFTINFOSIZE*i+2)-1]){ 198 if(iomodel->my_elements[(int)*(riftinfo+RIFTINFOSIZE*i+2)-1]){ 182 199 loads->AddObject(new Riftfront(iomodel->loadcounter+count+1,i,iomodel,DiagnosticHorizAnalysisEnum)); 183 200 count++; … … 186 203 187 204 /*free ressources: */ 188 xfree((void**)&iomodel->riftinfo); 189 xfree((void**)&iomodel->thickness); 190 xfree((void**)&iomodel->bed); 191 xfree((void**)&iomodel->surface); 192 xfree((void**)&iomodel->nodeoniceshelf); 193 194 cleanup_and_return: 205 xfree((void**)&riftinfo); 206 xfree((void**)&thickness); 207 xfree((void**)&bed); 208 xfree((void**)&surface); 209 xfree((void**)&nodeoniceshelf); 195 210 196 211 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
r9362 r9370 36 36 37 37 /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */ 38 if (!ismacayealpattyn & !isstokes)goto cleanup_and_return; 38 if(!ismacayealpattyn & !isstokes){ 39 *pnodes=nodes; 40 return; 41 } 39 42 40 43 /*Continuous Galerkin partition of nodes: */ … … 42 45 43 46 /*Create nodes: */ 44 iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum); 45 iomodel->FetchData(&iomodel->nodeonsurface,NULL,NULL,NodeOnSurfaceEnum); 46 iomodel->FetchData(&iomodel->nodeonhutter,NULL,NULL,NodeOnHutterEnum); 47 iomodel->FetchData(&iomodel->nodeonmacayeal,NULL,NULL,NodeOnMacayealEnum); 48 iomodel->FetchData(&iomodel->nodeonstokes,NULL,NULL,NodeOnStokesEnum); 49 iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum); 50 iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum); 51 iomodel->FetchData(&iomodel->nodeonwater,NULL,NULL,NodeOnWaterEnum); 52 iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum); 53 iomodel->FetchData(&iomodel->diagnostic_ref,NULL,NULL,DiagnosticRefEnum); 47 iomodel->FetchData(10,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnHutterEnum,NodeOnMacayealEnum,NodeOnStokesEnum, 48 NodeOnIceSheetEnum,NodeOnIceShelfEnum,NodeOnWaterEnum,VerticesTypeEnum,DiagnosticRefEnum); 54 49 55 50 for (i=0;i<numberofvertices;i++){ … … 63 58 64 59 /*Clean fetched data: */ 65 xfree((void**)&iomodel->nodeonbed); 66 xfree((void**)&iomodel->nodeonsurface); 67 xfree((void**)&iomodel->nodeonhutter); 68 xfree((void**)&iomodel->nodeonmacayeal); 69 xfree((void**)&iomodel->nodeonstokes); 70 xfree((void**)&iomodel->nodeonicesheet); 71 xfree((void**)&iomodel->nodeoniceshelf); 72 xfree((void**)&iomodel->nodeonwater); 73 xfree((void**)&iomodel->vertices_type); 74 xfree((void**)&iomodel->diagnostic_ref); 75 76 cleanup_and_return: 60 iomodel->DeleteData(10,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnHutterEnum,NodeOnMacayealEnum,NodeOnStokesEnum, 61 NodeOnIceSheetEnum,NodeOnIceShelfEnum,NodeOnWaterEnum,VerticesTypeEnum,DiagnosticRefEnum); 77 62 78 63 /*Assign output pointer: */ 79 64 *pnodes=nodes; 80 81 65 } -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
r9362 r9370 22 22 bool control_analysis; 23 23 bool qmu_analysis; 24 25 /*Fetch data needed: */26 iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);27 iomodel->FetchData(&iomodel->elements_type,NULL,NULL,ElementsTypeEnum);28 24 25 /*Fetch constants needed: */ 29 26 iomodel->constants->FindParam(&isstokes,IsstokesEnum); 30 27 iomodel->constants->FindParam(&ismacayealpattyn,IsmacayealpattynEnum); … … 34 31 iomodel->constants->FindParam(&qmu_analysis,QmuAnalysisEnum); 35 32 33 /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */ 34 if(!ismacayealpattyn & !isstokes) return; 36 35 37 /* Now, is the flag macayaealpattyn on? otherwise, do nothing: */38 i f (!ismacayealpattyn & !isstokes) return;36 /*Fetch data needed: */ 37 iomodel->FetchData(2,ElementsEnum,ElementsTypeEnum); 39 38 40 39 /*Update elements: */ … … 82 81 83 82 /*Post-process: */ 84 85 83 elements->InputDuplicate(VxEnum,VxPicardEnum); 86 84 elements->InputDuplicate(VxEnum,VxObsEnum); … … 98 96 99 97 /*Free data: */ 100 xfree((void**)&iomodel->elements); 101 xfree((void**)&iomodel->elements_type); 98 iomodel->DeleteData(2,ElementsEnum,ElementsTypeEnum); 102 99 } -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp
r9362 r9370 36 36 37 37 /*Now, is the flag ishutter on? otherwise, do nothing: */ 38 if (!ishutter) goto cleanup_and_return; 38 if (!ishutter){ 39 *pconstraints=constraints; 40 return; 41 } 39 42 40 43 /*Fetch data: */ 41 iomodel->FetchData(&iomodel->spcvx,NULL,NULL,SpcvxEnum); 42 iomodel->FetchData(&iomodel->spcvy,NULL,NULL,SpcvyEnum); 43 iomodel->FetchData(&iomodel->nodeonhutter,NULL,NULL,NodeOnHutterEnum); 44 iomodel->FetchData(3,SpcvxEnum,SpcvyEnum,NodeOnHutterEnum); 44 45 45 46 /*Initialize conunter*/ … … 50 51 /*keep only this partition's nodes:*/ 51 52 if((iomodel->my_vertices[i])){ 52 if (!(int)iomodel-> nodeonhutter[i]){53 if (!(int)iomodel->f(NodeOnHutterEnum)[i]){ 53 54 54 55 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticHutterAnalysisEnum)); … … 59 60 } 60 61 else{ 61 if (!isnan(iomodel-> spcvx[i])){62 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel-> spcvx[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.62 if (!isnan(iomodel->f(SpcvxEnum)[i])){ 63 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->f(SpcvxEnum)[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 63 64 count++; 64 65 } 65 66 66 if (!isnan(iomodel-> spcvy[i])){67 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel-> spcvy[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy67 if (!isnan(iomodel->f(SpcvyEnum)[i])){ 68 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->f(SpcvyEnum)[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 68 69 count++; 69 70 } 70 71 } 71 } //if((my_vertices[i]))72 } 72 73 } 73 74 74 75 /*Free data: */ 75 xfree((void**)&iomodel->nodeonhutter); 76 xfree((void**)&iomodel->spcvx); 77 xfree((void**)&iomodel->spcvy); 78 79 cleanup_and_return: 76 iomodel->DeleteData(3,SpcvxEnum,SpcvyEnum,NodeOnHutterEnum); 80 77 81 78 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp
r9362 r9370 35 35 36 36 /*Now, is the flag ishutter on? otherwise, do nothing: */ 37 if (!ishutter)goto cleanup_and_return; 37 if(!ishutter){ 38 *pnodes=nodes; 39 return; 40 } 38 41 39 42 /*Continuous Galerkin partition of nodes: */ … … 41 44 42 45 /*First fetch data: */ 43 iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum); 44 iomodel->FetchData(&iomodel->nodeonsurface,NULL,NULL,NodeOnSurfaceEnum); 45 iomodel->FetchData(&iomodel->nodeonhutter,NULL,NULL,NodeOnHutterEnum); 46 iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum); 47 iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum); 48 iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum); 49 iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum); 50 iomodel->FetchData(&iomodel->nodeonwater,NULL,NULL,NodeOnWaterEnum); 51 46 iomodel->FetchData(8,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnHutterEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,ElementsEnum,VerticesTypeEnum,NodeOnWaterEnum); 52 47 CreateNumberNodeToElementConnectivity(iomodel); 53 48 54 49 for (i=0;i<numberofvertices;i++){ 55 56 50 if(iomodel->my_vertices[i]){ 57 51 … … 63 57 64 58 /*Clean fetched data: */ 65 xfree((void**)&iomodel->nodeonbed); 66 xfree((void**)&iomodel->nodeonsurface); 67 xfree((void**)&iomodel->nodeonhutter); 68 xfree((void**)&iomodel->nodeonicesheet); 69 xfree((void**)&iomodel->nodeoniceshelf); 70 xfree((void**)&iomodel->elements); 71 xfree((void**)&iomodel->nodeonwater); 72 xfree((void**)&iomodel->numbernodetoelementconnectivity); 73 xfree((void**)&iomodel->vertices_type); 74 75 cleanup_and_return: 59 iomodel->DeleteData(8,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnHutterEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,ElementsEnum,VerticesTypeEnum,NodeOnWaterEnum); 76 60 77 61 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp
r9362 r9370 21 21 22 22 /*Fetch data needed: */ 23 iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);24 iomodel->FetchData(&iomodel->elements_type,NULL,NULL,ElementsTypeEnum);25 23 iomodel->constants->FindParam(&numberofelements,NumberOfElementsEnum); 26 24 iomodel->constants->FindParam(&ishutter,IshutterEnum); … … 28 26 /*Now, is the flag hutter on? otherwise, do nothing: */ 29 27 if (!ishutter)return; 28 29 iomodel->FetchData(2,ElementsEnum,ElementsTypeEnum); 30 30 31 31 /*Update elements: */ … … 44 44 45 45 /*Free data: */ 46 xfree((void**)&iomodel->elements); 47 46 iomodel->DeleteData(2,ElementsEnum,ElementsTypeEnum); 48 47 } -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp
r9362 r9370 26 26 iomodel->constants->FindParam(&dim,DimEnum); 27 27 iomodel->constants->FindParam(&yts,YtsEnum); 28 iomodel->constants->FindParam(&numberofvertices,NumberOfVerticesEnum); 28 29 29 30 /*Recover pointer: */ … … 34 35 35 36 /*return if 2d mesh*/ 36 if (dim==2) goto cleanup_and_return; 37 if(dim==2){ 38 *pconstraints=constraints; 39 return; 40 } 37 41 38 42 /*Fetch data: */ 39 iomodel->FetchData(&iomodel->spcvz,NULL,NULL,SpcvzEnum); 40 iomodel->FetchData(&iomodel->nodeonstokes,NULL,NULL,NodeOnStokesEnum); 41 iomodel->constants->FindParam(&numberofvertices,NumberOfVerticesEnum); 43 iomodel->FetchData(2,SpcvzEnum,NodeOnStokesEnum); 42 44 43 45 /*Initialize counter*/ … … 50 52 if(iomodel->my_vertices[i]){ 51 53 52 if ((int)iomodel-> nodeonstokes[i]){54 if ((int)iomodel->f(NodeOnStokesEnum)[i]){ 53 55 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,DiagnosticVertAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for Stokes 54 56 count++; 55 57 } 56 else if (!isnan(iomodel-> spcvz[i])){58 else if (!isnan(iomodel->f(SpcvzEnum)[i])){ 57 59 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1, 58 iomodel-> spcvz[i]/yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.60 iomodel->f(SpcvzEnum)[i]/yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 59 61 count++; 60 62 … … 64 66 65 67 /*Free data: */ 66 xfree((void**)&iomodel->spcvz); 67 xfree((void**)&iomodel->nodeonstokes); 68 iomodel->DeleteData(2,SpcvzEnum,NodeOnStokesEnum); 68 69 69 70 cleanup_and_return: -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp
r9362 r9370 35 35 36 36 /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */ 37 if (dim==2)goto cleanup_and_return; 37 if (dim==2){ 38 *pnodes=nodes; 39 return; 40 } 38 41 39 42 /*Continuous Galerkin partition of nodes: */ … … 41 44 42 45 /*First fetch data: */ 43 iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum); 44 iomodel->FetchData(&iomodel->nodeonsurface,NULL,NULL,NodeOnSurfaceEnum); 45 iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum); 46 iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum); 47 iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum); 48 iomodel->FetchData(&iomodel->nodeonwater,NULL,NULL,NodeOnWaterEnum); 46 iomodel->FetchData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum); 49 47 50 48 for (i=0;i<numberofvertices;i++){ 51 52 49 if(iomodel->my_vertices[i]){ 53 50 … … 59 56 60 57 /*Clean fetched data: */ 61 xfree((void**)&iomodel->nodeonbed); 62 xfree((void**)&iomodel->nodeonsurface); 63 xfree((void**)&iomodel->nodeonicesheet); 64 xfree((void**)&iomodel->nodeoniceshelf); 65 xfree((void**)&iomodel->nodeonwater); 66 xfree((void**)&iomodel->vertices_type); 58 iomodel->DeleteData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum); 67 59 68 cleanup_and_return:69 70 60 /*Assign output pointer: */ 71 61 *pnodes=nodes; -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp
r9362 r9370 27 27 28 28 /*Fetch data needed: */ 29 iomodel->FetchData( &iomodel->elements,NULL,NULL,ElementsEnum);29 iomodel->FetchData(1,ElementsEnum); 30 30 31 31 /*Update elements: */ … … 55 55 56 56 /*Free data: */ 57 xfree((void**)&iomodel->elements);57 iomodel->DeleteData(1,ElementsEnum); 58 58 59 59 } -
issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp
r9362 r9370 36 36 37 37 /*First fetch data: */ 38 iomodel->FetchData(&iomodel->nodeonbed,NULL,NULL,NodeOnBedEnum); 39 iomodel->FetchData(&iomodel->nodeonsurface,NULL,NULL,NodeOnSurfaceEnum); 40 iomodel->FetchData(&iomodel->nodeonicesheet,NULL,NULL,NodeOnIceSheetEnum); 41 iomodel->FetchData(&iomodel->nodeoniceshelf,NULL,NULL,NodeOnIceShelfEnum); 42 iomodel->FetchData(&iomodel->vertices_type,NULL,NULL,VerticesTypeEnum); 43 iomodel->FetchData(&iomodel->nodeonwater,NULL,NULL,NodeOnWaterEnum); 38 iomodel->FetchData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum); 44 39 45 40 for (i=0;i<numberofvertices;i++){ … … 54 49 55 50 /*Clean fetched data: */ 56 xfree((void**)&iomodel->nodeonbed); 57 xfree((void**)&iomodel->nodeonsurface); 58 xfree((void**)&iomodel->nodeonicesheet); 59 xfree((void**)&iomodel->nodeoniceshelf); 60 xfree((void**)&iomodel->nodeonwater); 61 xfree((void**)&iomodel->vertices_type); 51 iomodel->DeleteData(6,NodeOnBedEnum,NodeOnSurfaceEnum,NodeOnIceSheetEnum,NodeOnIceShelfEnum,VerticesTypeEnum,NodeOnWaterEnum); 62 52 63 53 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp
r9362 r9370 21 21 /*Fetch data needed: */ 22 22 iomodel->constants->FindParam(&dim,DimEnum); 23 iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);24 23 iomodel->constants->FindParam(&numberofelements,NumberOfElementsEnum); 24 iomodel->FetchData(1,ElementsEnum); 25 25 26 26 /*Update elements: */ … … 44 44 45 45 /*Free data: */ 46 xfree((void**)&iomodel->elements); 47 46 iomodel->DeleteData(1,ElementsEnum); 48 47 } -
issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
r9362 r9370 29 29 30 30 /*Fetch data needed: */ 31 iomodel->FetchData( &iomodel->elements,NULL,NULL,ElementsEnum);31 iomodel->FetchData(1,ElementsEnum); 32 32 33 33 /*Update elements: */ … … 65 65 66 66 /*Free data: */ 67 xfree((void**)&iomodel->elements); 68 69 67 iomodel->DeleteData(1,ElementsEnum); 70 68 } -
issm/trunk/src/c/objects/Bamg/AdjacentTriangle.h
r9320 r9370 18 18 19 19 //Constructors 20 AdjacentTriangle() :a(0),t(NULL){};20 AdjacentTriangle(){}; 21 21 AdjacentTriangle(Triangle* tt,int aa): t(tt),a(aa &3) {}; 22 22 -
issm/trunk/src/c/objects/Bamg/EigenMetric.cpp
r9320 r9370 10 10 /*Constructor*/ 11 11 /*FUNCTION EigenMetric::EigenMetric(const Metric M){{{1*/ 12 EigenMetric::EigenMetric(const Metric &M){12 EigenMetric::EigenMetric(const Metric M){ 13 13 /*From a metric (a11,a21,a22), get eigen values lambda1 and lambda2 and one eigen vector v*/ 14 14 … … 90 90 /*}}}1*/ 91 91 /*FUNCTION EigenMetric::EigenMetric(double r1,double r2,const D2 vp1){{{1*/ 92 EigenMetric::EigenMetric(double r1,double r2,const D2 &vp1): lambda1(r1),lambda2(r2),v(vp1){92 EigenMetric::EigenMetric(double r1,double r2,const D2 vp1): lambda1(r1),lambda2(r2),v(vp1){ 93 93 94 94 }/*}}}*/ -
issm/trunk/src/c/objects/Bamg/Metric.cpp
r9320 r9370 14 14 15 15 /*Constructor/Destructor*/ 16 /*FUNCTION Metric::Metric(){{{1*/16 Metric::Metric(){ }; 17 17 /*FUNCTION Metric::Metric(double a){{{1*/ 18 18 Metric::Metric(double a): a11(1/(a*a)),a21(0),a22(1/(a*a)){ … … 24 24 }/*}}}*/ 25 25 /*FUNCTION Metric::Metric(const double a[3],const Metric& m0, const Metric& m1,const Metric& m2 ){{{1*/ 26 Metric::Metric(const double a[3],const Metric & m0, const Metric& m1,const Metric&m2 ){26 Metric::Metric(const double a[3],const Metric m0, const Metric m1,const Metric m2 ){ 27 27 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/Metric)*/ 28 28 … … 45 45 /*}}}1*/ 46 46 /*FUNCTION Metric::Metric(double a,const Metric& ma, double b,const Metric& mb){{{1*/ 47 Metric::Metric(double a,const Metric & ma, double b,const Metric&mb) {47 Metric::Metric(double a,const Metric ma, double b,const Metric mb) { 48 48 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/EigenMetric)*/ 49 49 … … 139 139 /*Intermediary*/ 140 140 /*FUNCTION LengthInterpole{{{1*/ 141 double LengthInterpole(const Metric & Ma,const Metric&Mb, R2 AB) {141 double LengthInterpole(const Metric Ma,const Metric Mb, R2 AB) { 142 142 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/LengthInterpole)*/ 143 143 … … 310 310 /*}}}1*/ 311 311 /*FUNCTION abscisseInterpole{{{1*/ 312 double abscisseInterpole(const Metric & Ma,const Metric&Mb, R2 AB,double s,int optim) {312 double abscisseInterpole(const Metric Ma,const Metric Mb, R2 AB,double s,int optim) { 313 313 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/abscisseInterpole)*/ 314 314 -
issm/trunk/src/c/objects/Bamg/Metric.h
r9320 r9370 25 25 26 26 //functions 27 Metric() :a11(0),a21(0),a22(0){};28 Metric(const EigenMetric &);27 Metric(); 28 Metric(const EigenMetric); 29 29 Metric(double a); 30 30 Metric(double a,double b,double c); 31 Metric( double a,const Metric & ma, double b,const Metric&mb);32 Metric(const double a[3],const Metric & m0,const Metric& m1,const Metric&m2 );31 Metric( double a,const Metric ma, double b,const Metric mb); 32 Metric(const double a[3],const Metric m0,const Metric m1,const Metric m2 ); 33 33 void Echo(); 34 34 R2 mul(const R2 x)const; … … 62 62 63 63 //functions 64 EigenMetric(const Metric &);65 EigenMetric(double r1,double r2,const D2 &vp1);64 EigenMetric(const Metric ); 65 EigenMetric(double r1,double r2,const D2 vp1); 66 66 void Echo(); 67 67 void Abs(); … … 97 97 //Functions 98 98 void SimultaneousMatrixReduction( Metric M1, Metric M2,D2xD2 &V); 99 double LengthInterpole(const Metric & Ma,const Metric&Mb, R2 AB);100 double abscisseInterpole(const Metric & Ma,const Metric&Mb, R2 AB,double s,int optim=0);99 double LengthInterpole(const Metric Ma,const Metric Mb, R2 AB); 100 double abscisseInterpole(const Metric Ma,const Metric Mb, R2 AB,double s,int optim=0); 101 101 102 102 //inlines … … 115 115 } 116 116 } 117 inline Metric::Metric(const EigenMetric &M) {117 inline Metric::Metric(const EigenMetric M) { 118 118 double v00=M.v.x*M.v.x; 119 119 double v11=M.v.y*M.v.y; -
issm/trunk/src/c/objects/Bamg/R2.h
r9320 r9370 68 68 P2<R,RR> ty() {return P2<R,RR>(x.y,y.y);} 69 69 //Operators 70 P2<R,RR> operator*(const P2<R,RR> &c) const {return P2<R,RR>(x.x*c.x + x.y*c.y, y.x*c.x + y.y*c.y);}70 P2<R,RR> operator*(const P2<R,RR> c) const {return P2<R,RR>(x.x*c.x + x.y*c.y, y.x*c.x + y.y*c.y);} 71 71 P2xP2<R,RR> operator*(P2xP2<R,RR> c) const{ 72 72 return P2xP2<R,RR>(x.x*c.x.x + x.y*c.y.x, -
issm/trunk/src/c/objects/Bamg/Triangle.cpp
r9320 r9370 9 9 10 10 /*Constructors/Destructors*/ 11 /*FUNCTION Triangle(){{{1*/12 Triangle::Triangle(void){13 14 }15 /*}}}*/16 11 /*FUNCTION Triangle(Mesh *Th,long i,long j,long k) {{{1*/ 17 12 Triangle::Triangle(Mesh *Th,long i,long j,long k) { -
issm/trunk/src/c/objects/Bamg/Triangle.h
r9320 r9370 29 29 30 30 //Constructors/Destructors 31 Triangle() ;31 Triangle(){} 32 32 Triangle(Mesh *Th,long i,long j,long k); 33 33 Triangle(BamgVertex *v0,BamgVertex *v1,BamgVertex *v2); -
issm/trunk/src/c/objects/Bamg/VertexOnEdge.h
r9326 r9370 19 19 20 20 //Constructors 21 VertexOnEdge(BamgVertex * w, Edge *bw,double s) :v(w),be(bw),abcisse(s) {} ;22 VertexOnEdge(){} ;21 VertexOnEdge(BamgVertex * w, Edge *bw,double s) :v(w),be(bw),abcisse(s) {} 22 VertexOnEdge(){} 23 23 24 24 //Operators -
issm/trunk/src/c/objects/Bamg/VertexOnGeom.cpp
r9320 r9370 16 16 curvilincoord=0; 17 17 gv=0; 18 ge=0;18 //ge=0; 19 19 } 20 20 /*}}}*/ … … 24 24 curvilincoord=-1; 25 25 gv=&g; 26 ge=0;26 //ge=0; 27 27 } 28 28 /*}}}*/ … … 32 32 curvilincoord=s; 33 33 ge=&g; 34 gv=0;34 //gv=0; 35 35 } 36 36 /*}}}*/ -
issm/trunk/src/c/objects/Bamg/VertexOnVertex.cpp
r9320 r9370 12 12 /*FUNCTION VertexOnVertex::VertexOnVertex(){{{1*/ 13 13 VertexOnVertex::VertexOnVertex() { 14 v=NULL;15 bv=NULL;14 //v=NULL; 15 //bv=NULL; 16 16 };/*}}}*/ 17 17 /*FUNCTION VertexOnVertex::VertexOnVertex(BamgVertex * w,BamgVertex *bw){{{1*/ -
issm/trunk/src/c/objects/IoModel.cpp
r9362 r9370 482 482 void IoModel::FetchData(int num,...){ 483 483 484 485 484 va_list ap; 486 485 int dataenum; … … 493 492 494 493 va_start(ap,num); 495 496 for(i = 0; i <num; i++){ 494 for(i=0; i<num; i++){ 497 495 498 dataenum=va_arg(ap, int); 496 dataenum=va_arg(ap, int); _assert_(this->data->Exist(dataenum)==false); 499 497 this->FetchData(&matrix,&M,&N,dataenum); 500 498 … … 521 519 522 520 va_start(ap,num); 523 524 521 for(i = 0; i <num; i++){ 525 526 522 dataenum=va_arg(ap, int); 527 528 523 parameter=(DoubleMatParam*)this->data->FindParamObject(dataenum); 529 524 if(parameter){ … … 538 533 } 539 534 /*}}}*/ 540 /*FUNCTION IoModel:: get(int dataenum){{{1*/535 /*FUNCTION IoModel::f(int dataenum){{{1*/ 541 536 double* IoModel::f(int dataenum){ 542 537 … … 544 539 545 540 parameter=(DoubleMatParam*)this->data->FindParamObject(dataenum); 546 547 if (parameter==NULL)return NULL; //might be legitimate 548 else{ 549 return parameter->GetPointer(); 550 } 541 if (parameter==NULL) _error_("Field of enum %s has not been loaded in iomodel",EnumToStringx(dataenum)); 542 return parameter->GetPointer(); 551 543 } 552 544 /*}}}*/ … … 763 755 extern int num_procs; 764 756 765 766 757 int found=0; 767 758 int record_enum; … … 821 812 /*FUNCTION IoModel::FetchDataToInput(Elements* elements,IoModel* iomodel,int vector_enum,int default_vector_enum,double default_value{{{1*/ 822 813 void IoModel::FetchDataToInput(Elements* elements,int vector_enum,int default_vector_enum,double default_value){ 823 824 814 825 815 /*intermediary: */ -
issm/trunk/src/c/objects/IoModel.h
r9362 r9370 20 20 21 21 public: 22 Parameters * constants; //this dataset holds all double, int, bool and char* parameters read in from the input file.*23 Parameters * data;//this dataset holds temporary data, memory intensive.22 Parameters *constants; //this dataset holds all double, int, bool and char*parameters read in from the input file.* 23 Parameters *data; //this dataset holds temporary data, memory intensive. 24 24 25 25 /*This data needs to stay memory resident at all time, even if it's memory intensive: */ 26 bool *my_elements;27 bool *my_nodes;28 int *my_vertices;29 int *singlenodetoelementconnectivity;30 int *numbernodetoelementconnectivity;26 bool *my_elements; 27 bool *my_nodes; 28 int *my_vertices; 29 int *singlenodetoelementconnectivity; 30 int *numbernodetoelementconnectivity; 31 31 32 32 /*Data to synchronize through low level object drivers: */ 33 int nodecounter;//keep track of how many nodes are being created in each analysis type34 int loadcounter;//keep track of how many loads are being created in each analysis type35 int constraintcounter;//keep track of how many constraints are being created in each analysis type33 int nodecounter; //keep track of how many nodes are being created in each analysis type 34 int loadcounter; //keep track of how many loads are being created in each analysis type 35 int constraintcounter; //keep track of how many constraints are being created in each analysis type 36 36 37 37 /*Methods: {{{1*/
Note:
See TracChangeset
for help on using the changeset viewer.