Changeset 26205
- Timestamp:
- 04/22/21 10:46:39 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r26204 r26205 2732 2732 ElementMatrix* StressbalanceAnalysis::CreateKMatrixMLHO(Element* element){/*{{{*/ 2733 2733 2734 _error_("Mono Layer Higher-Order called, not fully tested. If you are sure inusing it, comment this line.");2734 _error_("Mono Layer Higher-Order called, not fully tested. If you are sure of using it, comment this line."); 2735 2735 2736 2736 /* Check if ice in element */ … … 2914 2914 2915 2915 /* Start looping on the number of gaussian points: */ 2916 Gauss* gauss = element->NewGauss( 5);2916 Gauss* gauss = element->NewGauss(2); 2917 2917 Gauss* gauss_base = basalelement->NewGauss(); 2918 2918 while(gauss->next()){ … … 3192 3192 switch(domaintype){ 3193 3193 case Domain2DhorizontalEnum: 3194 // itapopo FIXME use basalelement or element only here 3194 3195 basalelement = element; 3195 3196 break; … … 3216 3217 IssmDouble* vsx = xNew<IssmDouble>(numnodes); 3217 3218 IssmDouble* vsy = xNew<IssmDouble>(numnodes); 3219 IssmDouble* vx = xNew<IssmDouble>(numnodes); 3220 IssmDouble* vy = xNew<IssmDouble>(numnodes); 3218 3221 IssmDouble* vz = xNew<IssmDouble>(numnodes); 3219 3222 IssmDouble* vel = xNew<IssmDouble>(numnodes); 3223 IssmDouble* n = xNew<IssmDouble>(numnodes); 3220 3224 3221 3225 /*Use the dof list to index into the solution vector: */ … … 3252 3256 element->AddBasalInput(VxShearEnum,vshx,element->GetElementType()); 3253 3257 element->AddBasalInput(VyShearEnum,vshy,element->GetElementType()); 3254 3255 /*Get Vz and compute vel (base)*/ 3256 basalelement->GetInputListOnNodes(&vz[0],VzEnum,0.); 3257 for(i=0;i<numnodes;i++) vel[i]=sqrt(vbx[i]*vbx[i] + vby[i]*vby[i] + vz[i]*vz[i]); 3258 3258 3259 3259 /*Add vx and vy as inputs to the tria element (base velocities): */ 3260 3260 element->AddBasalInput(VxBaseEnum,vbx,element->GetElementType()); 3261 3261 element->AddBasalInput(VyBaseEnum,vby,element->GetElementType()); 3262 element->AddBasalInput(VelEnum,vel,element->GetElementType()); //itapopo check this3263 3262 3264 3263 /*Add vx and vy as inputs to the tria element (surface velocities): */ … … 3266 3265 element->AddBasalInput(VySurfaceEnum,vsy,element->GetElementType()); 3267 3266 3267 /*Compute the vertically averaged velocities on each node*/ 3268 basalelement->GetInputListOnNodes(&n[0],MaterialsRheologyNEnum,0.); 3269 for(i=0;i<numnodes;i++){ //numnodes of the 2D mesh in which the MLHO is written 3270 vx[i]=vbx[i]+vshx[i]*(n[i]+1)/(n[i]+2); 3271 vy[i]=vby[i]+vshy[i]*(n[i]+1)/(n[i]+2); 3272 } 3273 3274 /*Get Vz and compute vel (vertically averaged vel)*/ 3275 basalelement->GetInputListOnNodes(&vz[0],VzEnum,0.); 3276 for(i=0;i<numnodes;i++) vel[i]=sqrt(vx[i]*vx[i] + vy[i]*vy[i] + vz[i]*vz[i]); 3277 3278 /*Add vx and vy as inputs to the tria element (vertically averaged velocities): */ 3279 element->AddBasalInput(VxEnum,vx,element->GetElementType()); 3280 element->AddBasalInput(VyEnum,vy,element->GetElementType()); 3281 element->AddBasalInput(VelEnum,vel,element->GetElementType()); 3282 3268 3283 /*Free ressources:*/ 3269 3284 xDelete<IssmDouble>(vel); 3285 xDelete<IssmDouble>(vx); 3286 xDelete<IssmDouble>(vy); 3270 3287 xDelete<IssmDouble>(vz); 3271 3288 xDelete<IssmDouble>(vby); … … 3277 3294 xDelete<IssmDouble>(values); 3278 3295 xDelete<IssmDouble>(xyz_list); 3296 xDelete<IssmDouble>(n); 3279 3297 xDelete<int>(doflist); 3280 3298 if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
Note:
See TracChangeset
for help on using the changeset viewer.