Changeset 17429
- Timestamp:
- 03/13/14 15:32:02 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp ¶
r17428 r17429 29 29 } 30 30 } 31 32 31 if(iomodel->meshtype==Mesh3DEnum){ 33 32 iomodel->FetchDataToInput(elements,MeshElementonbedEnum); 33 iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum); 34 34 } 35 35 } … … 86 86 87 87 /*Intermediaries */ 88 int meshtype,dim;88 int meshtype,dim; 89 89 int i,row,col,stabilization; 90 90 bool extrapolatebydiffusion = true; … … 110 110 IssmDouble* B = xNew<IssmDouble>(dim*numnodes); 111 111 IssmDouble* Bprime = xNew<IssmDouble>(dim*numnodes); 112 IssmDouble* dlsf = xNew<IssmDouble>(dim);113 IssmDouble* normal= xNew<IssmDouble>(dim);114 IssmDouble* D = xNew<IssmDouble>(dim*dim);112 IssmDouble* D = xNew<IssmDouble>(dim*dim); 113 IssmDouble* dlsf = xNew<IssmDouble>(dim); 114 IssmDouble* normal= xNew<IssmDouble>(dim); 115 115 116 116 /*Retrieve all inputs and parameters*/ … … 162 162 for(col=0;col<dim;col++) 163 163 if(row==col) 164 D[row*dim+col] =D_scalar*normal[row];164 D[row*dim+col]=D_scalar*normal[row]; 165 165 else 166 D[row*dim+col] =0.;166 D[row*dim+col]=0.; 167 167 TripleMultiply(B,dim,numnodes,1, 168 168 D,dim,dim,0, … … 181 181 for(col=0;col<dim;col++) 182 182 if(row==col) 183 D[row*dim+col] =D_scalar*kappa;183 D[row*dim+col]=D_scalar*kappa; 184 184 else 185 D[row*dim+col] =0.;185 D[row*dim+col]=0.; 186 186 TripleMultiply(Bprime,dim,numnodes,1, 187 187 D,dim,dim,0, … … 207 207 xDelete<IssmDouble>(B); 208 208 xDelete<IssmDouble>(Bprime); 209 xDelete<IssmDouble>(D); 209 210 xDelete<IssmDouble>(dlsf); 210 211 xDelete<IssmDouble>(normal); 212 delete gauss; 211 213 if(meshtype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;}; 212 delete gauss;213 214 return Ke; 214 215 … … 224 225 /*Fetch number of nodes */ 225 226 int numnodes = basalelement->GetNumberOfNodes(); 226 basalelement->FindParam(&meshtype,MeshTypeEnum);227 227 228 228 /*Initialize Element vector*/ … … 230 230 for(i=0;i<numnodes;i++) 231 231 pe->values[i]=0.; 232 233 basalelement->FindParam(&meshtype,MeshTypeEnum); 232 234 if(meshtype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;}; 233 235 return pe; … … 326 328 node=element->GetNode(in); 327 329 levelset_input->GetInputValue(&phi,gauss); 328 if(phi<=0.){ 329 /* if ice, set dirichlet BC */ 330 extvar_input->GetInputValue(&value,gauss); 331 node->ApplyConstraint(1,value); 332 } 333 else { 334 /* no ice, set no spc */ 335 node->DofInFSet(0); 330 if(node->IsActive()){ 331 if(phi<=0.){ 332 /* if ice, set dirichlet BC */ 333 extvar_input->GetInputValue(&value,gauss); 334 node->ApplyConstraint(1,value); 335 } 336 else { 337 /* no ice, set no spc */ 338 node->DofInFSet(0); 339 } 336 340 } 337 341 } -
TabularUnified issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp ¶
r17427 r17429 37 37 if(iomodel->meshtype==Mesh3DEnum){ 38 38 iomodel->FetchDataToInput(elements,MeshElementonbedEnum); 39 iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum); 39 40 } 40 41 } … … 101 102 102 103 /*Intermediaries */ 103 int dim, meshtype; // solve for LSF in horizontal plane only104 int dim, meshtype; 104 105 int i, row, col; 105 106 IssmDouble kappa; … … 136 137 basalelement->GetVerticesCoordinates(&xyz_list); 137 138 basalelement->FindParam(&dt,TimesteppingTimeStepEnum); 138 Input* vx_input = NULL; 139 Input* vy_input = NULL; 139 Input* vx_input=NULL; 140 Input* vy_input=NULL; 141 if(meshtype==Mesh2DhorizontalEnum){ 142 vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input); 143 vy_input=basalelement->GetInput(VyEnum); _assert_(vy_input); 144 } 145 else{ 146 if(dim==1){ 147 vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input); 148 } 149 if(dim==2){ 150 vx_input=basalelement->GetInput(VxAverageEnum); _assert_(vx_input); 151 vy_input=basalelement->GetInput(VyAverageEnum); _assert_(vy_input); 152 } 153 } 154 140 155 Input* lsf_slopex_input = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input); 141 156 Input* lsf_slopey_input = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input); 142 157 Input* calvingrate_input = basalelement->GetInput(MasstransportCalvingrateEnum); _assert_(calvingrate_input); 143 144 if(meshtype==Mesh2DhorizontalEnum){145 vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);146 vy_input=basalelement->GetInput(VyEnum); _assert_(vy_input);147 }148 else{149 if(dim==1){150 vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);151 }152 if(dim==2){153 vx_input=basalelement->GetInput(VxAverageEnum); _assert_(vx_input);154 vy_input=basalelement->GetInput(VyAverageEnum); _assert_(vy_input);155 }156 }157 158 158 159 /* Start looping on the number of gaussian points: */ … … 260 261 xDelete<IssmDouble>(c); 261 262 xDelete<IssmDouble>(dlsf); 263 delete gauss; 262 264 if(meshtype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;}; 263 delete gauss;264 265 return Ke; 265 266 }/*}}}*/ … … 306 307 xDelete<IssmDouble>(xyz_list); 307 308 xDelete<IssmDouble>(basis); 309 basalelement->FindParam(&meshtype,MeshTypeEnum); 310 if(meshtype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;}; 308 311 delete gauss; 309 312 } … … 311 314 for(i=0;i<numnodes;i++) 312 315 pe->values[i]=0.; 313 if(meshtype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};314 316 return pe; 315 317 }/*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Node.cpp ¶
r17323 r17429 97 97 analysis_enum==HydrologyDCInefficientAnalysisEnum || 98 98 analysis_enum==DamageEvolutionAnalysisEnum || 99 analysis_enum==HydrologyDCEfficientAnalysisEnum 99 analysis_enum==HydrologyDCEfficientAnalysisEnum || 100 analysis_enum==LevelsetAnalysisEnum || 101 analysis_enum==ExtrapolationAnalysisEnum 100 102 ){ 101 103 if(iomodel->meshtype==Mesh3DEnum || iomodel->meshtype==Mesh2DverticalEnum){
Note:
See TracChangeset
for help on using the changeset viewer.