source:
issm/oecreview/Archive/16554-17801/ISSM-17584-17585.diff@
17802
Last change on this file since 17802 was 17802, checked in by , 11 years ago | |
---|---|
File size: 50.6 KB |
-
../trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp
125 125 }/*}}}*/ 126 126 ElementMatrix* BalancethicknessAnalysis::CreateKMatrix(Element* element){/*{{{*/ 127 127 128 if(!element->IsOnB ed()) return NULL;128 if(!element->IsOnBase()) return NULL; 129 129 Element* basalelement = element->SpawnBasalElement(); 130 130 131 131 ElementMatrix* Ke = NULL; … … 317 317 }/*}}}*/ 318 318 ElementVector* BalancethicknessAnalysis::CreatePVector(Element* element){/*{{{*/ 319 319 320 if(!element->IsOnB ed()) return NULL;320 if(!element->IsOnBase()) return NULL; 321 321 Element* basalelement = element->SpawnBasalElement(); 322 322 323 323 ElementVector* pe = NULL; -
../trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
120 120 basalelement = element; 121 121 break; 122 122 case Mesh3DEnum: 123 if(!element->IsOnB ed()) return NULL;123 if(!element->IsOnBase()) return NULL; 124 124 basalelement = element->SpawnBasalElement(); 125 125 break; 126 126 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 224 224 basalelement = element; 225 225 break; 226 226 case Mesh3DEnum: 227 if(!element->IsOnB ed()) return NULL;227 if(!element->IsOnBase()) return NULL; 228 228 basalelement = element->SpawnBasalElement(); 229 229 break; 230 230 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 322 322 element->FindParam(&meshtype,MeshTypeEnum); 323 323 324 324 if(meshtype!=Mesh2DhorizontalEnum){ 325 if(!element->IsOnB ed()) return;325 if(!element->IsOnBase()) return; 326 326 basalelement=element->SpawnBasalElement(); 327 327 } 328 328 else{ … … 493 493 494 494 switch(meshtype){ 495 495 case Mesh2DhorizontalEnum: 496 if(!element->IsOnB ed()) return;496 if(!element->IsOnBase()) return; 497 497 B = element->GetMaterialParameter(MaterialsRheologyBbarEnum); 498 498 break; 499 499 case Mesh3DEnum: … … 613 613 basalelement = element; 614 614 break; 615 615 case Mesh3DEnum: 616 if(!element->IsOnB ed()) return;616 if(!element->IsOnBase()) return; 617 617 basalelement = element->SpawnBasalElement(); 618 618 break; 619 619 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 693 693 basalelement = element; 694 694 break; 695 695 case Mesh3DEnum: 696 if(!element->IsOnB ed()) return;696 if(!element->IsOnBase()) return; 697 697 basalelement = element->SpawnBasalElement(); 698 698 break; 699 699 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); -
../trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
64 64 basalelement = element; 65 65 break; 66 66 case Mesh3DEnum: 67 if(!element->IsOnB ed()) return NULL;67 if(!element->IsOnBase()) return NULL; 68 68 basalelement = element->SpawnBasalElement(); 69 69 break; 70 70 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 693 693 basalelement = element; 694 694 break; 695 695 case Mesh3DEnum: 696 if(!element->IsOnB ed()) return NULL;696 if(!element->IsOnBase()) return NULL; 697 697 basalelement = element->SpawnBasalElement(); 698 698 break; 699 699 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); -
../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
83 83 }/*}}}*/ 84 84 ElementMatrix* LevelsetAnalysis::CreateKMatrix(Element* element){/*{{{*/ 85 85 86 if(!element->IsOnB ed()) return NULL;86 if(!element->IsOnBase()) return NULL; 87 87 Element* basalelement = element->SpawnBasalElement(); 88 88 89 89 /*Intermediaries */ … … 252 252 }/*}}}*/ 253 253 ElementVector* LevelsetAnalysis::CreatePVector(Element* element){/*{{{*/ 254 254 255 if(!element->IsOnB ed()) return NULL;255 if(!element->IsOnBase()) return NULL; 256 256 Element* basalelement = element->SpawnBasalElement(); 257 257 258 258 /*Intermediaries */ -
../trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
277 277 IssmDouble Jdet,slope[3]; 278 278 IssmDouble vx,vy,vz=0.,dbdx,dbdy,basalmeltingvalue; 279 279 280 if(!element->IsOnB ed()) return NULL;280 if(!element->IsOnBase()) return NULL; 281 281 282 282 /*Fetch number of nodes for this finite element*/ 283 283 int numnodes = element->GetNumberOfNodes(); -
../trunk-jpl/src/c/analyses/MeltingAnalysis.cpp
84 84 ElementMatrix* MeltingAnalysis::CreateKMatrix(Element* element){/*{{{*/ 85 85 86 86 /*Get basal element*/ 87 if(!element->IsOnB ed()) return NULL;87 if(!element->IsOnBase()) return NULL; 88 88 Element* basalelement = element->SpawnBasalElement(); 89 89 90 90 /*Intermediaries */ -
../trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp
162 162 /*}}}*/ 163 163 ElementMatrix* ExtrudeFromBaseAnalysis::CreateKMatrixBed(Element* element){/*{{{*/ 164 164 165 if(!element->IsOnB ed()) return NULL;165 if(!element->IsOnBase()) return NULL; 166 166 167 167 /*Intermediaries */ 168 168 IssmDouble Jdet,D,normal[3]; -
../trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp
58 58 basalelement = element; 59 59 break; 60 60 case Mesh3DEnum: 61 if(!element->IsOnB ed()) return NULL;61 if(!element->IsOnBase()) return NULL; 62 62 basalelement = element->SpawnBasalElement(); 63 63 break; 64 64 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); -
../trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.cpp
93 93 basalelement = element; 94 94 break; 95 95 case Mesh2DverticalEnum: 96 if(!element->IsOnB ed()) return NULL;96 if(!element->IsOnBase()) return NULL; 97 97 basalelement = element->SpawnBasalElement(); 98 98 break; 99 99 case Mesh3DEnum: 100 if(!element->IsOnB ed()) return NULL;100 if(!element->IsOnBase()) return NULL; 101 101 basalelement = element->SpawnBasalElement(); 102 102 break; 103 103 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 165 165 basalelement = element; 166 166 break; 167 167 case Mesh3DEnum: 168 if(!element->IsOnB ed()) return NULL;168 if(!element->IsOnBase()) return NULL; 169 169 basalelement = element->SpawnBasalElement(); 170 170 break; 171 171 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); -
../trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
243 243 /* Check if ice in element */ 244 244 if(!element->IsIceInElement()) return NULL; 245 245 246 if(!element->IsOnB ed()) return NULL;246 if(!element->IsOnBase()) return NULL; 247 247 Element* basalelement = element->SpawnBasalElement(); 248 248 249 249 ElementMatrix* Ke = NULL; … … 489 489 /* Check if ice in element */ 490 490 if(!element->IsIceInElement()) return NULL; 491 491 492 if(!element->IsOnB ed()) return NULL;492 if(!element->IsOnBase()) return NULL; 493 493 Element* basalelement = element->SpawnBasalElement(); 494 494 495 495 ElementVector* pe = NULL; … … 676 676 677 677 element->FindParam(&meshtype,MeshTypeEnum); 678 678 if(meshtype!=Mesh2DhorizontalEnum){ 679 if(!element->IsOnB ed()) return;679 if(!element->IsOnBase()) return; 680 680 basalelement=element->SpawnBasalElement(); 681 681 } 682 682 else{ -
../trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.cpp
114 114 basalelement = element; 115 115 break; 116 116 case Mesh3DEnum: 117 if(!element->IsOnB ed()) return NULL;117 if(!element->IsOnBase()) return NULL; 118 118 basalelement = element->SpawnBasalElement(); 119 119 break; 120 120 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); -
../trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.cpp
114 114 basalelement = element; 115 115 break; 116 116 case Mesh3DEnum: 117 if(!element->IsOnB ed()) return NULL;117 if(!element->IsOnBase()) return NULL; 118 118 basalelement = element->SpawnBasalElement(); 119 119 break; 120 120 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); -
../trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp
162 162 /*}}}*/ 163 163 ElementMatrix* ExtrudeFromTopAnalysis::CreateKMatrixBed(Element* element){/*{{{*/ 164 164 165 if(!element->IsOnB ed()) return NULL;165 if(!element->IsOnBase()) return NULL; 166 166 167 167 /*Intermediaries */ 168 168 IssmDouble Jdet,D,normal[3]; -
../trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp
157 157 basalelement = element; 158 158 break; 159 159 case Mesh3DEnum: 160 if(!element->IsOnB ed()) return NULL;160 if(!element->IsOnBase()) return NULL; 161 161 basalelement = element->SpawnBasalElement(); 162 162 break; 163 163 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); -
../trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp
77 77 basalelement = element; 78 78 break; 79 79 case Mesh2DverticalEnum: 80 if(!element->IsOnB ed()) return NULL;80 if(!element->IsOnBase()) return NULL; 81 81 basalelement = element->SpawnBasalElement(); 82 82 break; 83 83 case Mesh3DEnum: 84 if(!element->IsOnB ed()) return NULL;84 if(!element->IsOnBase()) return NULL; 85 85 basalelement = element->SpawnBasalElement(); 86 86 break; 87 87 case Mesh3DtetrasEnum: 88 if(!element->IsOnB ed()) return NULL;88 if(!element->IsOnBase()) return NULL; 89 89 basalelement = element->SpawnBasalElement(); 90 90 break; 91 91 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 140 140 basalelement = element; 141 141 break; 142 142 case Mesh2DverticalEnum: 143 if(!element->IsOnB ed()) return NULL;143 if(!element->IsOnBase()) return NULL; 144 144 basalelement = element->SpawnBasalElement(); 145 145 break; 146 146 case Mesh3DEnum: 147 if(!element->IsOnB ed()) return NULL;147 if(!element->IsOnBase()) return NULL; 148 148 basalelement = element->SpawnBasalElement(); 149 149 break; 150 150 case Mesh3DtetrasEnum: 151 if(!element->IsOnB ed()) return NULL;151 if(!element->IsOnBase()) return NULL; 152 152 basalelement = element->SpawnBasalElement(); 153 153 break; 154 154 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); -
../trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
226 226 j0=2*nodeup; j1=2*nodeup+1; 227 227 228 228 /*Create matrix for these two nodes*/ 229 if(element->IsOnB ed() && element->IsOnSurface()){229 if(element->IsOnBase() && element->IsOnSurface()){ 230 230 Ke->values[i0*numdof+i0] = +one0; 231 231 Ke->values[i1*numdof+i1] = +one0; 232 232 Ke->values[j0*numdof+i0] = -one1; … … 234 234 Ke->values[j1*numdof+i1] = -one1; 235 235 Ke->values[j1*numdof+j1] = +one1; 236 236 } 237 else if(element->IsOnB ed()){237 else if(element->IsOnBase()){ 238 238 Ke->values[i0*numdof+i0] = one0; 239 239 Ke->values[i1*numdof+i1] = one0; 240 240 Ke->values[j0*numdof+i0] = -2.*one1; … … 418 418 } 419 419 420 420 /*Deal with basal velocities*/ 421 if(element->IsOnB ed()){421 if(element->IsOnBase()){ 422 422 drag_input->GetInputValue(&drag,gauss); 423 423 424 424 switch(frictionlaw){ -
../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
1084 1084 basalelement = element; 1085 1085 break; 1086 1086 case Mesh3DEnum: 1087 if(!element->IsOnB ed()) return NULL;1087 if(!element->IsOnBase()) return NULL; 1088 1088 basalelement = element->SpawnBasalElement(); 1089 1089 break; 1090 1090 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 1170 1170 basalelement = element; 1171 1171 break; 1172 1172 case Mesh3DEnum: case Mesh2DverticalEnum: 1173 if(!element->IsOnB ed()) return NULL;1173 if(!element->IsOnBase()) return NULL; 1174 1174 basalelement = element->SpawnBasalElement(); 1175 1175 break; 1176 1176 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 1373 1373 basalelement = element; 1374 1374 break; 1375 1375 case Mesh3DEnum: case Mesh2DverticalEnum: 1376 if(!element->IsOnB ed()) return NULL;1376 if(!element->IsOnBase()) return NULL; 1377 1377 basalelement = element->SpawnBasalElement(); 1378 1378 break; 1379 1379 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 1691 1691 basalelement = element; 1692 1692 break; 1693 1693 case Mesh3DEnum: case Mesh2DverticalEnum: 1694 if(!element->IsOnB ed()){xDelete<IssmDouble>(xyz_list); return;}1694 if(!element->IsOnBase()){xDelete<IssmDouble>(xyz_list); return;} 1695 1695 basalelement=element->SpawnBasalElement(); 1696 1696 break; 1697 1697 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 1772 1772 }/*}}}*/ 1773 1773 ElementMatrix* StressbalanceAnalysis::CreateKMatrixL1L2Friction(Element* element){/*{{{*/ 1774 1774 1775 if(!element->IsOnB ed() || element->IsFloating()) return NULL;1775 if(!element->IsOnBase() || element->IsFloating()) return NULL; 1776 1776 Element* basalelement = element->SpawnBasalElement(); 1777 1777 ElementMatrix* Ke = CreateKMatrixSSAFriction(basalelement); 1778 1778 … … 1853 1853 basalelement = element; 1854 1854 break; 1855 1855 case Mesh3DEnum: 1856 if(!element->IsOnB ed()) return NULL;1856 if(!element->IsOnBase()) return NULL; 1857 1857 basalelement = element->SpawnBasalElement(); 1858 1858 break; 1859 1859 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 2017 2017 basalelement = element; 2018 2018 break; 2019 2019 case Mesh3DEnum: 2020 if(!element->IsOnB ed()){xDelete<IssmDouble>(xyz_list); return;}2020 if(!element->IsOnBase()){xDelete<IssmDouble>(xyz_list); return;} 2021 2021 basalelement=element->SpawnBasalElement(); 2022 2022 break; 2023 2023 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 2235 2235 /* Check if ice in element */ 2236 2236 if(!element->IsIceInElement()) return NULL; 2237 2237 2238 if(element->IsFloating() || !element->IsOnB ed()) return NULL;2238 if(element->IsFloating() || !element->IsOnBase()) return NULL; 2239 2239 2240 2240 /*Intermediaries*/ 2241 2241 int dim,meshtype; … … 3040 3040 }/*}}}*/ 3041 3041 ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSFriction(Element* element){/*{{{*/ 3042 3042 3043 if(element->IsFloating() || !element->IsOnB ed()) return NULL;3043 if(element->IsFloating() || !element->IsOnBase()) return NULL; 3044 3044 3045 3045 /*If on water or not FS, skip stiffness: */ 3046 3046 int approximation; … … 3133 3133 }/*}}}*/ 3134 3134 ElementMatrix* StressbalanceAnalysis::CreateKMatrixFSShelf(Element* element){/*{{{*/ 3135 3135 3136 if(!element->IsFloating() || !element->IsOnB ed()) return NULL;3136 if(!element->IsFloating() || !element->IsOnBase()) return NULL; 3137 3137 3138 3138 /*If on not water or not FS, skip stiffness: */ 3139 3139 int approximation,shelf_dampening; … … 3564 3564 IssmDouble *xyz_list_base = NULL; 3565 3565 3566 3566 /*Get basal element*/ 3567 if(!element->IsOnB ed() || !element->IsFloating()) return NULL;3567 if(!element->IsOnBase() || !element->IsFloating()) return NULL; 3568 3568 3569 3569 /*Get problem dimension*/ 3570 3570 element->FindParam(&meshtype,MeshTypeEnum); … … 4508 4508 ElementMatrix* StressbalanceAnalysis::CreateKMatrixSSA3dFriction(Element* element){/*{{{*/ 4509 4509 4510 4510 /*Initialize Element matrix and return if necessary*/ 4511 if(element->IsFloating() || !element->IsOnB ed()) return NULL;4511 if(element->IsFloating() || !element->IsOnBase()) return NULL; 4512 4512 4513 4513 /*Build a tria element using the 3 nodes of the base of the penta. Then use 4514 4514 * the tria functionality to build a friction stiffness matrix on these 3 … … 4732 4732 }/*}}}*/ 4733 4733 ElementMatrix* StressbalanceAnalysis::CreateKMatrixCouplingSSAHOFriction(Element* element){/*{{{*/ 4734 4734 4735 if(element->IsFloating() || !element->IsOnB ed()) return NULL;4735 if(element->IsFloating() || !element->IsOnBase()) return NULL; 4736 4736 4737 4737 /*Constants*/ 4738 4738 int numnodes = element->GetNumberOfNodes(); … … 4938 4938 4939 4939 /*If on water or not FS, skip stiffness: */ 4940 4940 element->GetInputValue(&approximation,ApproximationEnum); 4941 if(element->IsFloating() || !element->IsOnB ed()) return NULL;4941 if(element->IsFloating() || !element->IsOnBase()) return NULL; 4942 4942 4943 4943 int vnumnodes = element->NumberofNodesVelocity(); 4944 4944 int pnumnodes = element->NumberofNodesPressure(); … … 5223 5223 IssmDouble basis[6]; //for the six nodes of the penta 5224 5224 5225 5225 /*Initialize Element vector and return if necessary*/ 5226 if(!element->IsOnB ed() || element->IsFloating()) return NULL;5226 if(!element->IsOnBase() || element->IsFloating()) return NULL; 5227 5227 element->GetInputValue(&approximation,ApproximationEnum); 5228 5228 if(approximation!=HOFSApproximationEnum) return NULL; 5229 5229 … … 5387 5387 IssmDouble *xyz_list = NULL; 5388 5388 5389 5389 /*Initialize Element vector and return if necessary*/ 5390 if(!element->IsOnB ed() || element->IsFloating()) return NULL;5390 if(!element->IsOnBase() || element->IsFloating()) return NULL; 5391 5391 element->GetInputValue(&approximation,ApproximationEnum); 5392 5392 if(approximation!=SSAFSApproximationEnum) return NULL; 5393 5393 int vnumnodes = element->NumberofNodesVelocity(); -
../trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
164 164 basalelement = element; 165 165 break; 166 166 case Mesh3DEnum: 167 if(!element->IsOnB ed()) return NULL;167 if(!element->IsOnBase()) return NULL; 168 168 basalelement = element->SpawnBasalElement(); 169 169 break; 170 170 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 269 269 basalelement = element; 270 270 break; 271 271 case Mesh3DEnum: 272 if(!element->IsOnB ed()) return NULL;272 if(!element->IsOnBase()) return NULL; 273 273 basalelement = element->SpawnBasalElement(); 274 274 break; 275 275 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 398 398 399 399 element->FindParam(&meshtype,MeshTypeEnum); 400 400 if(meshtype!=Mesh2DhorizontalEnum){ 401 if(!element->IsOnB ed()) return;401 if(!element->IsOnBase()) return; 402 402 basalelement=element->SpawnBasalElement(); 403 403 } 404 404 else{ -
../trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
280 280 if(!element->IsIceInElement()) return NULL; 281 281 282 282 /*Initialize Element matrix and return if necessary*/ 283 if(!element->IsOnB ed() || !element->IsFloating()) return NULL;283 if(!element->IsOnBase() || !element->IsFloating()) return NULL; 284 284 285 285 IssmDouble dt,Jdet,D; 286 286 IssmDouble *xyz_list_base = NULL; 287 287 288 288 /*Get basal element*/ 289 if(!element->IsOnB ed() || !element->IsFloating()) return NULL;289 if(!element->IsOnBase() || !element->IsFloating()) return NULL; 290 290 291 291 /*Fetch number of nodes for this finite element*/ 292 292 int numnodes = element->GetNumberOfNodes(); … … 433 433 if(!element->IsIceInElement()) return NULL; 434 434 435 435 /* Geothermal flux on ice sheet base and basal friction */ 436 if(!element->IsOnB ed() || element->IsFloating()) return NULL;436 if(!element->IsOnBase() || element->IsFloating()) return NULL; 437 437 438 438 IssmDouble dt,Jdet,geothermalflux,vx,vy,vz; 439 439 IssmDouble alpha2,scalar,basalfriction,heatflux; … … 498 498 IssmDouble *xyz_list_base = NULL; 499 499 500 500 /*Get basal element*/ 501 if(!element->IsOnB ed() || !element->IsFloating()) return NULL;501 if(!element->IsOnBase() || !element->IsFloating()) return NULL; 502 502 503 503 /*Fetch number of nodes for this finite element*/ 504 504 int numnodes = element->GetNumberOfNodes(); -
../trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
122 122 dim = 2; 123 123 break; 124 124 case Mesh3DEnum: 125 if(!element->IsOnB ed()) return NULL;125 if(!element->IsOnBase()) return NULL; 126 126 basalelement = element->SpawnBasalElement(); 127 127 dim = 2; 128 128 break; … … 270 270 basalelement = element; 271 271 break; 272 272 case Mesh3DEnum: 273 if(!element->IsOnB ed()) return NULL;273 if(!element->IsOnBase()) return NULL; 274 274 basalelement = element->SpawnBasalElement(); 275 275 break; 276 276 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 383 383 384 384 element->FindParam(&meshtype,MeshTypeEnum); 385 385 if(meshtype!=Mesh2DhorizontalEnum){ 386 if(!element->IsOnB ed()) return;386 if(!element->IsOnBase()) return; 387 387 basalelement=element->SpawnBasalElement(); 388 388 } 389 389 else{ -
../trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
353 353 if(!element->IsIceInElement()) return NULL; 354 354 355 355 /*Initialize Element matrix and return if necessary*/ 356 if(!element->IsOnB ed() || !element->IsFloating()) return NULL;356 if(!element->IsOnBase() || !element->IsFloating()) return NULL; 357 357 358 358 /*Intermediaries*/ 359 359 IssmDouble dt,Jdet,D; … … 538 538 if(!element->IsIceInElement()) return NULL; 539 539 540 540 /* implementation of the basal condition decision chart of Aschwanden 2012, Fig.5 */ 541 if(!element->IsOnB ed() || element->IsFloating()) return NULL;541 if(!element->IsOnBase() || element->IsFloating()) return NULL; 542 542 543 543 IssmDouble dt,Jdet,enthalpy,pressure,watercolumn,geothermalflux,vx,vy,vz; 544 544 IssmDouble enthalpyup,pressureup,alpha2,scalar,basalfriction,heatflux; … … 628 628 if(!element->IsIceInElement()) return NULL; 629 629 630 630 /*Get basal element*/ 631 if(!element->IsOnB ed() || !element->IsFloating()) return NULL;631 if(!element->IsOnBase() || !element->IsFloating()) return NULL; 632 632 633 633 IssmDouble h_pmp,dt,Jdet,scalar_ocean,pressure; 634 634 IssmDouble *xyz_list_base = NULL; … … 901 901 if(!element->IsIceInElement()) return; 902 902 903 903 /* Only compute melt rates at the base of grounded ice*/ 904 if(!element->IsOnB ed() || element->IsFloating()) return;904 if(!element->IsOnBase() || element->IsFloating()) return; 905 905 906 906 /* Intermediaries */ 907 907 const int dim=3; … … 1047 1047 if(!element->IsIceInElement()) return; 1048 1048 1049 1049 /* Only drain waterfraction of ice column from element at base*/ 1050 if(!element->IsOnB ed()) return; //FIXME: allow freeze on for floating elements1050 if(!element->IsOnBase()) return; //FIXME: allow freeze on for floating elements 1051 1051 1052 1052 /* Intermediaries*/ 1053 1053 int is, numvertices, numsegments; … … 1149 1149 if(!element->IsIceInElement()) return; 1150 1150 1151 1151 /* Only update Constraints at the base of grounded ice*/ 1152 if(!(element->IsOnB ed()) || element->IsFloating()) return;1152 if(!(element->IsOnBase()) || element->IsFloating()) return; 1153 1153 1154 1154 /*Intermediary*/ 1155 1155 bool isdynamicbasalspc,setspc; -
../trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
118 118 dim = 2; 119 119 break; 120 120 case Mesh2DverticalEnum: 121 if(!element->IsOnB ed()) return NULL;121 if(!element->IsOnBase()) return NULL; 122 122 basalelement = element->SpawnBasalElement(); 123 123 dim = 1; 124 124 break; 125 125 case Mesh3DEnum: 126 if(!element->IsOnB ed()) return NULL;126 if(!element->IsOnBase()) return NULL; 127 127 basalelement = element->SpawnBasalElement(); 128 128 dim = 2; 129 129 break; … … 241 241 dim = 2; 242 242 break; 243 243 case Mesh2DverticalEnum: 244 if(!element->IsOnB ed()) return NULL;244 if(!element->IsOnBase()) return NULL; 245 245 basalelement = element->SpawnBasalElement(); 246 246 dim = 1; 247 247 break; 248 248 case Mesh3DEnum: 249 if(!element->IsOnB ed()) return NULL;249 if(!element->IsOnBase()) return NULL; 250 250 basalelement = element->SpawnBasalElement(); 251 251 dim = 2; 252 252 break; … … 372 372 for(int i=0;i<femmodel->elements->Size();i++){ 373 373 374 374 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 375 if(!element->IsOnB ed()) continue;375 if(!element->IsOnBase()) continue; 376 376 377 377 int numnodes = element->GetNumberOfNodes(); 378 378 Input* groundedice_input = element->GetInput(MaskGroundediceLevelsetEnum); _assert_(groundedice_input); -
../trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp
83 83 }/*}}}*/ 84 84 ElementMatrix* ExtrapolationAnalysis::CreateKMatrix(Element* element){/*{{{*/ 85 85 86 if(!element->IsOnB ed()) return NULL;86 if(!element->IsOnBase()) return NULL; 87 87 Element* basalelement = element->SpawnBasalElement(); 88 88 89 89 /*Intermediaries */ … … 218 218 }/*}}}*/ 219 219 ElementVector* ExtrapolationAnalysis::CreatePVector(Element* element){/*{{{*/ 220 220 221 if(!element->IsOnB ed()) return NULL;221 if(!element->IsOnBase()) return NULL; 222 222 Element* basalelement = element->SpawnBasalElement(); 223 223 224 224 /*Intermediaries */ -
../trunk-jpl/src/c/classes/Loads/Pengrid.cpp
613 613 *punstable=unstable; 614 614 return; 615 615 } 616 if(!element->IsOnB ed()){616 if(!element->IsOnBase()){ 617 617 unstable=0; 618 618 active=0; 619 619 *punstable=unstable; -
../trunk-jpl/src/c/classes/Elements/Element.h
88 88 void GetVerticesCoordinates(IssmDouble** xyz_list); 89 89 void GetVerticesSidList(int* sidlist); 90 90 void GetVerticesConnectivityList(int* connectivitylist); 91 bool HasNodeOnB ed();91 bool HasNodeOnBase(); 92 92 bool HasNodeOnSurface(); 93 93 int Id(); 94 94 int Sid(); … … 182 182 virtual int GetNumberOfVertices(void)=0; 183 183 184 184 virtual bool IsNodeOnShelfFromFlags(IssmDouble* flags)=0; 185 virtual bool IsOnB ed()=0;185 virtual bool IsOnBase()=0; 186 186 virtual bool IsOnSurface()=0; 187 187 virtual void GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating)=0; 188 188 virtual IssmDouble GetGroundedPortion(IssmDouble* xyz_list)=0; -
../trunk-jpl/src/c/classes/Elements/Tria.cpp
111 111 IssmDouble values2[NUMVERTICES]={0.}; 112 112 int numindices; 113 113 int *indices = NULL; 114 int index = this->EdgeOnB edIndex();114 int index = this->EdgeOnBaseIndex(); 115 115 NodeOnEdgeIndices(&numindices,&indices,index,this->FiniteElement()); 116 116 for(int i=0;i<numindices;i++){ 117 117 values2[indices[i]] = values[i]; … … 475 475 if(gl[2]==0.) gl[2]=gl[2]+epsilon; 476 476 477 477 if(meshtype==Mesh2DverticalEnum){ 478 this->EdgeOnB edIndices(&index1,&index2);478 this->EdgeOnBaseIndices(&index1,&index2); 479 479 if(gl[index1]>0 && gl[index2]>0) phi=1; // All grounded 480 480 else if(gl[index1]<0 && gl[index2]<0) phi=0; // All floating 481 481 else if(gl[index1]<0 && gl[index2]>0){ //index2 grounded … … 584 584 585 585 /*Allocate Output*/ 586 586 IssmDouble* xyz_list_edge = xNew<IssmDouble>(2*3); 587 this->EdgeOnB edIndices(&indices[0],&indices[1]);587 this->EdgeOnBaseIndices(&indices[0],&indices[1]); 588 588 for(int i=0;i<2;i++) for(int j=0;j<2;j++) xyz_list_edge[i*3+j]=xyz_list[indices[i]][j]; 589 589 590 590 /*Assign output pointer*/ … … 1131 1131 1132 1132 } 1133 1133 /*}}}*/ 1134 /*FUNCTION Tria::IsOnB ed{{{*/1135 bool Tria::IsOnB ed(){1134 /*FUNCTION Tria::IsOnBase {{{*/ 1135 bool Tria::IsOnBase(){ 1136 1136 1137 1137 int meshtype; 1138 1138 this->parameters->FindParam(&meshtype,MeshTypeEnum); 1139 1139 switch(meshtype){ 1140 1140 case Mesh2DverticalEnum: 1141 return HasEdgeOnB ed();1141 return HasEdgeOnBase(); 1142 1142 case Mesh2DhorizontalEnum: 1143 1143 return true; 1144 1144 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); … … 1191 1191 1192 1192 } 1193 1193 /*}}}*/ 1194 /*FUNCTION Tria::HasEdgeOnB ed{{{*/1195 bool Tria::HasEdgeOnB ed(){1194 /*FUNCTION Tria::HasEdgeOnBase {{{*/ 1195 bool Tria::HasEdgeOnBase(){ 1196 1196 1197 1197 IssmDouble values[NUMVERTICES]; 1198 1198 IssmDouble sum; … … 1235 1235 } 1236 1236 } 1237 1237 /*}}}*/ 1238 /*FUNCTION Tria::EdgeOnB edIndices{{{*/1239 void Tria::EdgeOnB edIndices(int* pindex1,int* pindex2){1238 /*FUNCTION Tria::EdgeOnBaseIndices{{{*/ 1239 void Tria::EdgeOnBaseIndices(int* pindex1,int* pindex2){ 1240 1240 1241 1241 IssmDouble values[NUMVERTICES]; 1242 1242 int indices[3][2] = {{1,2},{2,0},{0,1}}; … … 1277 1277 _error_("Could not find 2 vertices on surface"); 1278 1278 } 1279 1279 /*}}}*/ 1280 /*FUNCTION Tria::EdgeOnB edIndex{{{*/1281 int Tria::EdgeOnB edIndex(void){1280 /*FUNCTION Tria::EdgeOnBaseIndex{{{*/ 1281 int Tria::EdgeOnBaseIndex(void){ 1282 1282 1283 1283 IssmDouble values[NUMVERTICES]; 1284 1284 int indices[3][2] = {{1,2},{2,0},{0,1}}; … … 1318 1318 /*FUNCTION Tria::FSContactMigration{{{*/ 1319 1319 void Tria::FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){ 1320 1320 1321 if(!IsOnB ed()) return;1321 if(!IsOnBase()) return; 1322 1322 1323 1323 /*Intermediaries*/ 1324 1324 IssmDouble* xyz_list = NULL; … … 1397 1397 Gauss* Tria::NewGaussBase(int order){ 1398 1398 1399 1399 int indices[2]; 1400 this->EdgeOnB edIndices(&indices[0],&indices[1]);1400 this->EdgeOnBaseIndices(&indices[0],&indices[1]); 1401 1401 return new GaussTria(indices[0],indices[1],order); 1402 1402 } 1403 1403 /*}}}*/ … … 1643 1643 1644 1644 /*For FS only: we want the CS to be tangential to the bedrock*/ 1645 1645 inputs->GetInputValue(&approximation,ApproximationEnum); 1646 if(!HasNodeOnB ed() || approximation!=FSApproximationEnum) return;1646 if(!HasNodeOnBase() || approximation!=FSApproximationEnum) return; 1647 1647 1648 1648 //printf("element number %i \n",this->id); 1649 1649 /*Get inputs*/ … … 1773 1773 case Mesh2DhorizontalEnum: 1774 1774 return this; 1775 1775 case Mesh2DverticalEnum: 1776 _assert_(HasEdgeOnB ed());1777 this->EdgeOnB edIndices(&index1,&index2);1776 _assert_(HasEdgeOnBase()); 1777 this->EdgeOnBaseIndices(&index1,&index2); 1778 1778 return SpawnSeg(index1,index2); 1779 1779 default: 1780 1780 _error_("not implemented yet"); … … 1986 1986 /*FUNCTION Tria::UpdateConstraintsExtrudeFromBase{{{*/ 1987 1987 void Tria::UpdateConstraintsExtrudeFromBase(void){ 1988 1988 1989 if(!HasEdgeOnB ed()) return;1989 if(!HasEdgeOnBase()) return; 1990 1990 1991 1991 int extrusioninput; 1992 1992 IssmDouble value,isonbed; -
../trunk-jpl/src/c/classes/Elements/Tria.h
69 69 int GetNodeIndex(Node* node); 70 70 int GetNumberOfNodes(void); 71 71 int GetNumberOfVertices(void); 72 bool IsOnB ed();72 bool IsOnBase(); 73 73 bool IsOnSurface(); 74 bool HasEdgeOnB ed();74 bool HasEdgeOnBase(); 75 75 bool HasEdgeOnSurface(); 76 76 void EdgeOnSurfaceIndices(int* pindex1,int* pindex); 77 void EdgeOnB edIndices(int* pindex1,int* pindex);78 int EdgeOnB edIndex();77 void EdgeOnBaseIndices(int* pindex1,int* pindex); 78 int EdgeOnBaseIndex(); 79 79 int EdgeOnSurfaceIndex(); 80 80 bool IsNodeOnShelfFromFlags(IssmDouble* flags); 81 81 int NumberofNodesVelocity(void); -
../trunk-jpl/src/c/classes/Elements/Penta.cpp
118 118 void Penta::AddBasalInput(int input_enum,IssmDouble* values, int interpolation_enum){ 119 119 120 120 _assert_(this->inputs); 121 if(!IsOnB ed()) return;121 if(!IsOnBase()) return; 122 122 else{ 123 123 if(interpolation_enum==P1Enum){ 124 124 int i; … … 151 151 GaussPenta *gauss = NULL; 152 152 153 153 /* Basal friction can only be found at the base of an ice sheet: */ 154 if (!IsOnB ed() || IsFloating()){154 if (!IsOnBase() || IsFloating()){ 155 155 //empty friction: 156 156 this->inputs->AddInput(new PentaInput(BasalFrictionEnum,&basalfriction[0],P1Enum)); 157 157 return; … … 218 218 /*retrieve some parameters: */ 219 219 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 220 220 221 if(!IsOnB ed()){221 if(!IsOnBase()){ 222 222 //put zero 223 223 sigma_b->SetValue(id-1,0.0,INS_VAL); 224 224 return; … … 373 373 /*FUNCTION Penta::Delta18oParameterization{{{*/ 374 374 void Penta::Delta18oParameterization(void){ 375 375 /*Are we on the base? If not, return*/ 376 if(!IsOnB ed()) return;376 if(!IsOnBase()) return; 377 377 378 378 int i; 379 379 IssmDouble monthlytemperatures[NUMVERTICES][12],monthlyprec[NUMVERTICES][12]; … … 543 543 penta=this; 544 544 for(;;){ 545 545 /*Stop if we have reached the surface, else, take lower penta*/ 546 if (penta->IsOnB ed()) break;546 if (penta->IsOnBase()) break; 547 547 548 548 /* get lower Penta*/ 549 549 penta=penta->GetLowerPenta(); … … 1124 1124 /*recover parameters: */ 1125 1125 1126 1126 /*Are we on the base? If not, return*/ 1127 if(!IsOnB ed()) return;1127 if(!IsOnBase()) return; 1128 1128 1129 1129 /*OK, we are on bed. Initialize global inputs as 0*/ 1130 1130 total_thickness_input =new PentaInput(ThicknessEnum,zeros_list,P1Enum); … … 1224 1224 Input **base_inputs = NULL; 1225 1225 1226 1226 /*Are we on the base, not on the surface?:*/ 1227 if(!IsOnB ed()) return;1227 if(!IsOnBase()) return; 1228 1228 1229 1229 /*Step1: Get and Extrude original input: */ 1230 1230 num_inputs=1; … … 1414 1414 Penta *penta = NULL; 1415 1415 1416 1416 /*If not on bed, return*/ 1417 if (!IsOnB ed()) return;1417 if (!IsOnBase()) return; 1418 1418 1419 1419 /*Get dof list: */ 1420 1420 GetDofList(&doflist,NoneApproximationEnum,GsetEnum); … … 1503 1503 } 1504 1504 } 1505 1505 /*}}}*/ 1506 /*FUNCTION Penta::IsOnB ed{{{*/1507 bool Penta::IsOnB ed(void){1506 /*FUNCTION Penta::IsOnBase{{{*/ 1507 bool Penta::IsOnBase(void){ 1508 1508 1509 1509 bool onbed; 1510 1510 inputs->GetInputValue(&onbed,MeshElementonbedEnum); … … 1912 1912 1913 1913 /*For FS only: we want the CS to be tangential to the bedrock*/ 1914 1914 inputs->GetInputValue(&approximation,ApproximationEnum); 1915 if(!IsOnB ed() || (approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum && approximation!=HOFSApproximationEnum)) return;1915 if(!IsOnBase() || (approximation!=FSApproximationEnum && approximation!=SSAFSApproximationEnum && approximation!=HOFSApproximationEnum)) return; 1916 1916 1917 1917 /*Get number of nodes for velocity only and base*/ 1918 1918 BasalNodeIndices(&numindices,&indices,this->VelocityInterpolation()); … … 2021 2021 /*FUNCTION Penta::SpawnBasalElement{{{*/ 2022 2022 Element* Penta::SpawnBasalElement(void){ 2023 2023 2024 _assert_(this->IsOnB ed());2024 _assert_(this->IsOnBase()); 2025 2025 2026 2026 this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); 2027 2027 this->InputDepthAverageAtBase(DamageDEnum,DamageDbarEnum); … … 2108 2108 /*Bail out if this element if: 2109 2109 * -> Non SSA not on the surface 2110 2110 * -> SSA (2d model) and not on bed) */ 2111 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnB ed())){2111 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnBase())){ 2112 2112 return 0; 2113 2113 } 2114 2114 else if (approximation==SSAApproximationEnum){ … … 2489 2489 /*FUNCTION Penta::UpdateConstraintsExtrudeFromBase{{{*/ 2490 2490 void Penta::UpdateConstraintsExtrudeFromBase(void){ 2491 2491 2492 if(!IsOnB ed()) return;2492 if(!IsOnBase()) return; 2493 2493 2494 2494 int extrusioninput; 2495 2495 IssmDouble value,isonbed; … … 2664 2664 IssmDouble base,bed,surface,bathymetry; 2665 2665 IssmDouble xyz_list[NUMVERTICES][3]; 2666 2666 2667 if(!IsIceInElement() || IsFloating() || !IsOnB ed())return 0;2667 if(!IsIceInElement() || IsFloating() || !IsOnBase())return 0; 2668 2668 2669 2669 rho_ice=matpar->GetRhoIce(); 2670 2670 rho_water=matpar->GetRhoWater(); … … 2732 2732 2733 2733 IssmDouble mass_flux=0; 2734 2734 2735 if(!IsOnB ed()) return mass_flux;2735 if(!IsOnBase()) return mass_flux; 2736 2736 2737 2737 /*Depth Averaging Vx and Vy*/ 2738 2738 this->InputDepthAverageAtBase(VxEnum,VxAverageEnum); … … 2756 2756 2757 2757 IssmDouble mass_flux=0; 2758 2758 2759 if(!IsOnB ed()) return mass_flux;2759 if(!IsOnBase()) return mass_flux; 2760 2760 2761 2761 /*Depth Averaging Vx and Vy*/ 2762 2762 this->InputDepthAverageAtBase(VxEnum,VxAverageEnum); … … 2922 2922 Input* input=NULL; 2923 2923 2924 2924 if(enum_type==MaterialsRheologyBbarEnum){ 2925 if(!IsOnB ed()) return;2925 if(!IsOnBase()) return; 2926 2926 input=(Input*)inputs->GetInput(MaterialsRheologyBEnum); 2927 2927 } 2928 2928 else if(enum_type==DamageDbarEnum){ 2929 if(!IsOnB ed()) return;2929 if(!IsOnBase()) return; 2930 2930 input=(Input*)inputs->GetInput(DamageDEnum); 2931 2931 } 2932 2932 else{ … … 3114 3114 /*Nothing, J does not depends on the parameter being inverted for*/ 3115 3115 break; 3116 3116 case DragCoefficientAbsGradientEnum: 3117 if(IsOnB ed()){3117 if(IsOnBase()){ 3118 3118 tria=(Tria*)SpawnTria(0,1,2); 3119 3119 tria->GradjDragGradient(gradient,control_index); 3120 3120 delete tria->material; delete tria; 3121 3121 } 3122 3122 break; 3123 3123 case RheologyBbarAbsGradientEnum: 3124 if(IsOnB ed()){3124 if(IsOnBase()){ 3125 3125 tria=(Tria*)SpawnTria(0,1,2); 3126 3126 tria->GradjBGradient(gradient,control_index); 3127 3127 delete tria->material; delete tria; … … 3137 3137 void Penta::GradjDragSSA(Vector<IssmDouble>* gradient,int control_index){ 3138 3138 3139 3139 /*Gradient is 0 if on shelf or not on bed*/ 3140 if(IsFloating() || !IsOnB ed()) return;3140 if(IsFloating() || !IsOnBase()) return; 3141 3141 3142 3142 /*Spawn tria*/ 3143 3143 Tria* tria=(Tria*)SpawnTria(0,1,2); … … 3163 3163 GaussPenta *gauss=NULL; 3164 3164 3165 3165 /*Gradient is 0 if on shelf or not on bed*/ 3166 if(IsFloating() || !IsOnB ed()) return;3166 if(IsFloating() || !IsOnBase()) return; 3167 3167 3168 3168 /*Retrieve all inputs and parameters*/ 3169 3169 parameters->FindParam(&analysis_type,AnalysisTypeEnum); … … 3236 3236 GaussPenta* gauss=NULL; 3237 3237 3238 3238 /*Gradient is 0 if on shelf or not on bed*/ 3239 if(IsFloating() || !IsOnB ed()) return;3239 if(IsFloating() || !IsOnBase()) return; 3240 3240 3241 3241 /*Retrieve all inputs and parameters*/ 3242 3242 parameters->FindParam(&analysis_type,AnalysisTypeEnum); … … 3312 3312 void Penta::GradjBbarSSA(Vector<IssmDouble>* gradient,int control_index){ 3313 3313 3314 3314 /*This element should be collapsed into a tria element at its base*/ 3315 if (!IsOnB ed()) return;3315 if (!IsOnBase()) return; 3316 3316 3317 3317 /*Depth Average B*/ 3318 3318 this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); … … 3332 3332 void Penta::GradjBbarHO(Vector<IssmDouble>* gradient,int control_index){ 3333 3333 3334 3334 /*Gradient is computed on bed only (Bbar)*/ 3335 if (!IsOnB ed()) return;3335 if (!IsOnBase()) return; 3336 3336 3337 3337 /*Depth Average B and D*/ 3338 3338 this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); … … 3351 3351 void Penta::GradjBbarFS(Vector<IssmDouble>* gradient,int control_index){ 3352 3352 3353 3353 /*Gradient is computed on bed only (Bbar)*/ 3354 if (!IsOnB ed()) return;3354 if (!IsOnBase()) return; 3355 3355 3356 3356 /*Depth Average B and D*/ 3357 3357 this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); … … 3381 3381 for(int i=0;i<num_controls;i++){ 3382 3382 3383 3383 if(control_type[i]==MaterialsRheologyBbarEnum){ 3384 if (!IsOnB ed()) goto cleanup_and_return;3384 if (!IsOnBase()) goto cleanup_and_return; 3385 3385 input=(Input*)this->inputs->GetInput(MaterialsRheologyBEnum); _assert_(input); 3386 3386 } 3387 3387 else if(control_type[i]==DamageDbarEnum){ 3388 if (!IsOnB ed()) goto cleanup_and_return;3388 if (!IsOnBase()) goto cleanup_and_return; 3389 3389 input=(Input*)this->inputs->GetInput(DamageDEnum); _assert_(input); 3390 3390 } 3391 3391 else{ … … 3426 3426 /*Bail out if this element if: 3427 3427 * -> Non SSA and not on the surface 3428 3428 * -> SSA (2d model) and not on bed) */ 3429 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnB ed())){3429 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnBase())){ 3430 3430 return 0; 3431 3431 } 3432 3432 else if (approximation==SSAApproximationEnum){ … … 3463 3463 /*Bail out if this element if: 3464 3464 * -> Non SSA and not on the surface 3465 3465 * -> SSA (2d model) and not on bed) */ 3466 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnB ed())){3466 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnBase())){ 3467 3467 return 0; 3468 3468 } 3469 3469 else if (approximation==SSAApproximationEnum){ … … 3500 3500 /*Bail out if this element if: 3501 3501 * -> Non SSA and not on the surface 3502 3502 * -> SSA (2d model) and not on bed) */ 3503 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnB ed())){3503 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnBase())){ 3504 3504 return 0; 3505 3505 } 3506 3506 else if (approximation==SSAApproximationEnum){ … … 3539 3539 /*Bail out if this element if: 3540 3540 * -> Non SSA and not on the surface 3541 3541 * -> SSA (2d model) and not on bed) */ 3542 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnB ed())){3542 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnBase())){ 3543 3543 return 0; 3544 3544 } 3545 3545 else if (approximation==SSAApproximationEnum){ … … 3576 3576 /*Bail out if this element if: 3577 3577 * -> Non SSA and not on the surface 3578 3578 * -> SSA (2d model) and not on bed) */ 3579 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnB ed())){3579 if ((approximation!=SSAApproximationEnum && !IsOnSurface()) || (approximation==SSAApproximationEnum && !IsOnBase())){ 3580 3580 return 0; 3581 3581 } 3582 3582 else if (approximation==SSAApproximationEnum){ … … 3630 3630 Tria* tria=NULL; 3631 3631 3632 3632 /*If on water, on shelf or not on bed, skip: */ 3633 if(!IsIceInElement()|| IsFloating() || !IsOnB ed()) return 0;3633 if(!IsIceInElement()|| IsFloating() || !IsOnBase()) return 0; 3634 3634 3635 3635 tria=(Tria*)SpawnTria(0,1,2); //lower face is 0, upper face is 1 3636 3636 J=tria->DragCoefficientAbsGradient(); … … 3645 3645 Tria* tria=NULL; 3646 3646 3647 3647 /*If on water, on shelf or not on bed, skip: */ 3648 if(!IsIceInElement() || !IsOnB ed()) return 0;3648 if(!IsIceInElement() || !IsOnBase()) return 0; 3649 3649 3650 3650 tria=(Tria*)SpawnTria(0,1,2); 3651 3651 J=tria->RheologyBbarAbsGradient(); … … 3890 3890 IssmDouble h[NUMVERTICES],s[NUMVERTICES],b[NUMVERTICES],r[NUMVERTICES]; 3891 3891 IssmDouble melting[NUMVERTICES],phi[NUMVERTICES]; 3892 3892 3893 if(!IsOnB ed()) return;3893 if(!IsOnBase()) return; 3894 3894 3895 3895 /*Recover info at the vertices: */ 3896 3896 parameters->FindParam(&migration_style,GroundinglineMigrationEnum); -
../trunk-jpl/src/c/classes/Elements/Penta.h
186 186 void InputUpdateFromSolutionOneDof(IssmDouble* solutiong,int enum_type); 187 187 void InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solutiong,int enum_type); 188 188 bool IsOnSurface(void); 189 bool IsOnB ed(void);189 bool IsOnBase(void); 190 190 bool IsNodeOnShelfFromFlags(IssmDouble* flags); 191 191 void JacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss); 192 192 void JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss); -
../trunk-jpl/src/c/classes/Elements/Tetra.cpp
102 102 this->inputs->Configure(parameters); 103 103 } 104 104 /*}}}*/ 105 /*FUNCTION Tetra::FaceOnB edIndices{{{*/106 void Tetra::FaceOnB edIndices(int* pindex1,int* pindex2,int* pindex3){105 /*FUNCTION Tetra::FaceOnBaseIndices{{{*/ 106 void Tetra::FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3){ 107 107 108 108 IssmDouble values[NUMVERTICES]; 109 109 int indices[4][3] = {{0,1,2},{0,1,3},{1,2,3},{2,0,3}}; … … 186 186 187 187 /*Allocate Output*/ 188 188 IssmDouble* xyz_list_edge = xNew<IssmDouble>(3*3); 189 this->FaceOnB edIndices(&indices[0],&indices[1],&indices[2]);189 this->FaceOnBaseIndices(&indices[0],&indices[1],&indices[2]); 190 190 for(int i=0;i<3;i++) for(int j=0;j<3;j++) xyz_list_edge[i*3+j]=xyz_list[indices[i]][j]; 191 191 192 192 /*Assign output pointer*/ … … 226 226 return z; 227 227 } 228 228 /*}}}*/ 229 /*FUNCTION Tetra::HasFaceOnB ed{{{*/230 bool Tetra::HasFaceOnB ed(){229 /*FUNCTION Tetra::HasFaceOnBase{{{*/ 230 bool Tetra::HasFaceOnBase(){ 231 231 232 232 IssmDouble values[NUMVERTICES]; 233 233 IssmDouble sum; … … 397 397 xDelete<int>(doflist); 398 398 } 399 399 /*}}}*/ 400 /*FUNCTION Tetra::IsOnB ed{{{*/401 bool Tetra::IsOnB ed(){402 return HasFaceOnB ed();400 /*FUNCTION Tetra::IsOnBase {{{*/ 401 bool Tetra::IsOnBase(){ 402 return HasFaceOnBase(); 403 403 } 404 404 /*}}}*/ 405 405 /*FUNCTION Tetra::IsOnSurface {{{*/ … … 475 475 Gauss* Tetra::NewGaussBase(int order){ 476 476 477 477 int indices[3]; 478 this->FaceOnB edIndices(&indices[0],&indices[1],&indices[2]);478 this->FaceOnBaseIndices(&indices[0],&indices[1],&indices[2]); 479 479 return new GaussTetra(indices[0],indices[1],indices[2],order); 480 480 } 481 481 /*}}}*/ … … 659 659 660 660 /*For FS only: we want the CS to be tangential to the bedrock*/ 661 661 inputs->GetInputValue(&approximation,ApproximationEnum); 662 if(IsFloating() || !HasNodeOnB ed() || approximation!=FSApproximationEnum) return;662 if(IsFloating() || !HasNodeOnBase() || approximation!=FSApproximationEnum) return; 663 663 664 664 //printf("element number %i \n",this->id); 665 665 /*Get inputs*/ … … 726 726 /*FUNCTION Tetra::SpawnBasalElement{{{*/ 727 727 Element* Tetra::SpawnBasalElement(void){ 728 728 729 _assert_(HasFaceOnB ed());729 _assert_(HasFaceOnBase()); 730 730 731 731 int index1,index2,index3; 732 this->FaceOnB edIndices(&index1,&index2,&index3);732 this->FaceOnBaseIndices(&index1,&index2,&index3); 733 733 return SpawnTria(index1,index2,index3); 734 734 }/*}}}*/ 735 735 /*FUNCTION Tetra::SpawnTopElement{{{*/ -
../trunk-jpl/src/c/classes/Elements/Seg.h
71 71 void GetVerticesCoordinates(IssmDouble** pxyz_list); 72 72 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list){_error_("not implemented yet");}; 73 73 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list){_error_("not implemented yet");}; 74 bool IsOnB ed(){_error_("not implemented yet");};74 bool IsOnBase(){_error_("not implemented yet");}; 75 75 bool IsOnSurface(){_error_("not implemented yet");}; 76 76 bool IsNodeOnShelfFromFlags(IssmDouble* flags){_error_("not implemented yet");}; 77 77 void JacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss); -
../trunk-jpl/src/c/classes/Elements/Tetra.h
60 60 void Delta18oParameterization(void){_error_("not implemented yet");}; 61 61 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){_error_("not implemented yet");}; 62 62 void FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3); 63 void FaceOnB edIndices(int* pindex1,int* pindex2,int* pindex3);63 void FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3); 64 64 void FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3); 65 65 void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");}; 66 66 int FiniteElement(void); … … 73 73 int GetNumberOfVertices(void); 74 74 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); 75 75 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); 76 bool HasFaceOnB ed();76 bool HasFaceOnBase(); 77 77 bool HasFaceOnSurface(); 78 bool IsOnB ed();78 bool IsOnBase(); 79 79 bool IsOnSurface(); 80 80 bool IsNodeOnShelfFromFlags(IssmDouble* flags){_error_("not implemented yet");}; 81 81 void JacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss); -
../trunk-jpl/src/c/classes/Elements/Element.cpp
548 548 for(int i=0;i<numvertices;i++) connectivity[i]=this->vertices[i]->Connectivity(); 549 549 } 550 550 /*}}}*/ 551 bool Element::HasNodeOnB ed(){/*{{{*/551 bool Element::HasNodeOnBase(){/*{{{*/ 552 552 return (this->inputs->Max(MeshVertexonbedEnum)>0.); 553 553 }/*}}}*/ 554 554 bool Element::HasNodeOnSurface(){/*{{{*/
Note:
See TracBrowser
for help on using the repository browser.