Changeset 23672
- Timestamp:
- 01/31/19 13:25:38 (6 years ago)
- Location:
- issm/trunk-jpl/src/c/classes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r23652 r23672 1427 1427 int numiceverts; 1428 1428 IssmDouble s[2],x[2],y[2]; 1429 int *indices = NULL;1430 1429 this->GetLevelsetIntersection(&indices, &numiceverts,&s[0],MaskIceLevelsetEnum,0.); 1431 1430 _assert_(numiceverts); … … 1466 1465 x1=x[0]; y1=y[0]; x2=x[1]; y2=y[1]; 1467 1466 distance=sqrt(pow((x1-x2),2)+pow((y1-y2),2)); 1467 1468 int numthk=numiceverts+2; 1469 H=xNew<IssmDouble>(numthk); 1470 for(int iv=0;iv<NUMVERTICES;iv++) Haux[iv]=-bed[indices[iv]]; //sort bed in ice/noice 1471 1472 switch(numiceverts){ 1473 case 1: // average over triangle 1474 H[0]=Haux[0]; 1475 H[1]=Haux[0]+s[0]*(Haux[1]-Haux[0]); 1476 H[2]=Haux[0]+s[1]*(Haux[2]-Haux[0]); 1477 Haverage=(H[1]+H[2])/2; 1478 break; 1479 case 2: // average over quadrangle 1480 H[0]=Haux[0]; 1481 H[1]=Haux[1]; 1482 H[2]=Haux[0]+s[0]*(Haux[2]-Haux[0]); 1483 H[3]=Haux[1]+s[1]*(Haux[2]-Haux[1]); 1484 Haverage=(H[2]+H[3])/2; 1485 break; 1486 default: 1487 _error_("Number of ice covered vertices wrong in Tria::GetIceFrontArea(void)"); 1488 break; 1489 } 1490 frontarea=distance*Haverage; 1468 1491 } 1469 1492 else return 0; 1470 1493 1471 IssmDouble s[2]; // s:fraction of intersected triangle edges, that lies inside ice 1472 this->GetLevelsetIntersection(&indices, &numiceverts, s, MaskIceLevelsetEnum, 0.); 1473 int numthk=numiceverts+2; 1474 H=xNew<IssmDouble>(numthk); 1475 for(int iv=0;iv<NUMVERTICES;iv++) Haux[iv]=-bed[indices[iv]]; //sort bed in ice/noice 1476 1477 switch(numiceverts){ 1478 case 1: // average over triangle 1479 H[0]=Haux[0]; 1480 H[1]=Haux[0]+s[0]*(Haux[1]-Haux[0]); 1481 H[2]=Haux[0]+s[1]*(Haux[2]-Haux[0]); 1482 Haverage=(H[1]+H[2])/2; 1483 break; 1484 case 2: // average over quadrangle 1485 H[0]=Haux[0]; 1486 H[1]=Haux[1]; 1487 H[2]=Haux[0]+s[0]*(Haux[2]-Haux[0]); 1488 H[3]=Haux[1]+s[1]*(Haux[2]-Haux[1]); 1489 Haverage=(H[2]+H[3])/2; 1490 break; 1491 default: 1492 _error_("Number of ice covered vertices wrong in Tria::GetIceFrontArea(void)"); 1493 break; 1494 } 1495 frontarea=distance*Haverage; 1494 xDelete<int>(indices); 1495 xDelete<IssmDouble>(H); 1496 1496 1497 _assert_(frontarea>0); 1497 1498 return frontarea; … … 3408 3409 if(xIsNan<IssmDouble>(meltrates[iv])) _error_("NaN found in vector"); 3409 3410 if(xIsInf<IssmDouble>(meltrates[iv])) _error_("Inf found in vector"); 3411 3410 3412 } 3411 3413 … … 3414 3416 3415 3417 /*Cleanup and return*/ 3418 xDelete<IssmDouble>(basin_icefront_area); 3416 3419 delete gauss; 3417 3420 } -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r23652 r23672 1527 1527 1528 1528 xDelete<IssmDouble>(basin_icefront_area); 1529 xDelete<IssmDouble>(BasinId); 1529 1530 }/*}}}*/ 1530 1531 void FemModel::IceMassx(IssmDouble* pM, bool scaled){/*{{{*/
Note:
See TracChangeset
for help on using the changeset viewer.