Changeset 25763
- Timestamp:
- 11/16/20 16:00:17 (4 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 40 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp
r25439 r25763 32 32 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 33 33 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 34 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);34 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 35 35 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 36 36 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum); -
issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp
r25439 r25763 99 99 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 100 100 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 101 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);101 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 102 102 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 103 103 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum); -
issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp
r25439 r25763 41 41 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 42 42 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 43 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);43 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 44 44 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 45 45 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum); -
issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
r25539 r25763 136 136 iomodel->FetchDataToInput(inputs,elements,"md.geometry.thickness",ThicknessEnum); 137 137 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 138 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);138 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 139 139 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 140 140 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); -
issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
r25539 r25763 74 74 75 75 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 76 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);76 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 77 77 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 78 78 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum,0.); -
issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp
r25439 r25763 77 77 78 78 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 79 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);79 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 80 80 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 81 81 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vx",VxEnum); -
issm/trunk-jpl/src/c/analyses/HydrologyGlaDSAnalysis.cpp
r25697 r25763 129 129 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 130 130 iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum); 131 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0); /*Needed for friction*/131 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); /*Needed for friction*/ 132 132 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum); 133 133 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum); -
issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp
r25439 r25763 58 58 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 59 59 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 60 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);60 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 61 61 if(iomodel->domaintype!=Domain2DhorizontalEnum){ 62 62 iomodel->FetchDataToInput(inputs,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); -
issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp
r25439 r25763 42 42 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 43 43 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 44 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);44 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 45 45 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 46 46 if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum){ -
issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
r25539 r25763 148 148 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 149 149 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 150 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);150 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 151 151 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 152 152 iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); -
issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp
r25439 r25763 56 56 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 57 57 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 58 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);58 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 59 59 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 60 60 if(iomodel->domaintype!=Domain2DhorizontalEnum){ -
issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
r25759 r25763 40 40 iomodel->FetchData(&geodetic,"md.solidearth.settings.computesealevelchange"); 41 41 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.surfaceload.icethicknesschange",SurfaceloadIceThicknessChangeEnum); 42 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);42 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 43 43 iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum); 44 44 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.surfaceload.waterheightchange",SurfaceloadWaterHeightChangeEnum); … … 175 175 IssmDouble planetradius=0; 176 176 IssmDouble planetarea=0; 177 bool rigid=false; 177 178 bool elastic=false; 179 bool rotation=false; 178 180 179 181 int numoutputs; … … 207 209 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.ocean_area_scaling",SolidearthSettingsOceanAreaScalingEnum)); 208 210 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.computesealevelchange",SolidearthSettingsComputesealevelchangeEnum)); 211 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.isgrd",SolidearthSettingsGRDEnum)); 209 212 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.planetradius",SolidearthPlanetRadiusEnum)); 210 213 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.glfraction",SolidearthSettingsGlfractionEnum)); … … 260 263 } /*}}}*/ 261 264 /*Deal with elasticity {{{*/ 265 iomodel->FetchData(&rigid,"md.solidearth.settings.rigid"); 262 266 iomodel->FetchData(&elastic,"md.solidearth.settings.elastic"); 267 iomodel->FetchData(&rotation,"md.solidearth.settings.rotation"); 268 269 if(elastic | rigid){ 270 /*compute green functions for a range of angles*/ 271 iomodel->FetchData(°acc,"md.solidearth.settings.degacc"); 272 M=reCast<int,IssmDouble>(180./degacc+1.); 273 } 274 275 /*love numbers: */ 263 276 if(elastic){ 264 /*love numbers: */265 277 iomodel->FetchData(&love_h,&nl,NULL,"md.solidearth.lovenumbers.h"); 266 278 iomodel->FetchData(&love_k,&nl,NULL,"md.solidearth.lovenumbers.k"); … … 269 281 iomodel->FetchData(&love_tk,&nl,NULL,"md.solidearth.lovenumbers.tk"); 270 282 iomodel->FetchData(&love_tl,&nl,NULL,"md.solidearth.lovenumbers.tl"); 271 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.lovenumbers.tk2secular",TidalLoveK2SecularEnum));272 283 273 284 parameters->AddObject(new DoubleMatParam(LoadLoveHEnum,love_h,nl,1)); … … 278 289 parameters->AddObject(new DoubleMatParam(TidalLoveLEnum,love_tl,nl,1)); 279 290 280 /*compute elastic green function for a range of angles*/281 iomodel->FetchData(°acc,"md.solidearth.settings.degacc");282 M=reCast<int,IssmDouble>(180./degacc+1.);283 284 291 // AD performance is sensitive to calls to ensurecontiguous. 285 292 // // Providing "t" will cause ensurecontiguous to be called. 286 293 #ifdef _HAVE_AD_ 287 G_rigid=xNew<IssmDouble>(M,"t");288 294 G_elastic=xNew<IssmDouble>(M,"t"); 289 295 U_elastic=xNew<IssmDouble>(M,"t"); 290 296 H_elastic=xNew<IssmDouble>(M,"t"); 291 297 #else 292 G_rigid=xNew<IssmDouble>(M);293 298 G_elastic=xNew<IssmDouble>(M); 294 299 U_elastic=xNew<IssmDouble>(M); 295 300 H_elastic=xNew<IssmDouble>(M); 296 301 #endif 302 } 303 if(rigid){ 304 #ifdef _HAVE_AD_ 305 G_rigid=xNew<IssmDouble>(M,"t"); 306 #else 307 G_rigid=xNew<IssmDouble>(M); 308 #endif 309 } 310 311 if(rotation)parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.lovenumbers.tk2secular",TidalLoveK2SecularEnum)); 312 313 if(rigid | elastic){ 297 314 298 315 /*compute combined legendre + love number (elastic green function:*/ 299 316 m=DetermineLocalSize(M,IssmComm::GetComm()); 300 317 GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,IssmComm::GetComm()); 301 // AD performance is sensitive to calls to ensurecontiguous.302 // // Providing "t" will cause ensurecontiguous to be called.318 } 319 if(elastic){ 303 320 #ifdef _HAVE_AD_ 304 321 G_elastic_local=xNew<IssmDouble>(m,"t"); 305 G_rigid_local=xNew<IssmDouble>(m,"t");306 322 U_elastic_local=xNew<IssmDouble>(m,"t"); 307 323 H_elastic_local=xNew<IssmDouble>(m,"t"); 308 324 #else 309 325 G_elastic_local=xNew<IssmDouble>(m); 310 G_rigid_local=xNew<IssmDouble>(m);311 326 U_elastic_local=xNew<IssmDouble>(m); 312 327 H_elastic_local=xNew<IssmDouble>(m); 313 328 #endif 314 329 } 330 if(rigid){ 331 #ifdef _HAVE_AD_ 332 G_rigid_local=xNew<IssmDouble>(m,"t"); 333 #else 334 G_rigid_local=xNew<IssmDouble>(m); 335 #endif 336 } 337 338 if(rigid){ 315 339 for(int i=lower_row;i<upper_row;i++){ 316 340 IssmDouble alpha,x; 317 341 alpha= reCast<IssmDouble>(i)*degacc * PI / 180.0; 318 319 342 G_rigid_local[i-lower_row]= .5/sin(alpha/2.0); 343 } 344 } 345 if(elastic){ 346 for(int i=lower_row;i<upper_row;i++){ 347 IssmDouble alpha,x; 348 alpha= reCast<IssmDouble>(i)*degacc * PI / 180.0; 349 320 350 G_elastic_local[i-lower_row]= (love_k[nl-1]-love_h[nl-1])*G_rigid_local[i-lower_row]; 321 351 U_elastic_local[i-lower_row]= (love_h[nl-1])*G_rigid_local[i-lower_row]; … … 356 386 } 357 387 } 388 } 389 if(rigid){ 358 390 359 391 /*merge G_elastic_local into G_elastic; U_elastic_local into U_elastic; H_elastic_local to H_elastic:{{{*/ … … 369 401 /*All gather:*/ 370 402 ISSM_MPI_Allgatherv(G_rigid_local, m, ISSM_MPI_DOUBLE, G_rigid, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm()); 371 ISSM_MPI_Allgatherv(G_elastic_local, m, ISSM_MPI_DOUBLE, G_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm()); 372 ISSM_MPI_Allgatherv(U_elastic_local, m, ISSM_MPI_DOUBLE, U_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm()); 373 ISSM_MPI_Allgatherv(H_elastic_local, m, ISSM_MPI_DOUBLE, H_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm()); 374 403 if(elastic){ 404 ISSM_MPI_Allgatherv(G_elastic_local, m, ISSM_MPI_DOUBLE, G_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm()); 405 ISSM_MPI_Allgatherv(U_elastic_local, m, ISSM_MPI_DOUBLE, U_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm()); 406 ISSM_MPI_Allgatherv(H_elastic_local, m, ISSM_MPI_DOUBLE, H_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm()); 407 } 408 375 409 /*free resources: */ 376 410 xDelete<int>(recvcounts); 377 411 xDelete<int>(displs); 378 /*}}}*/379 412 380 413 /*Avoid singularity at 0: */ 381 414 G_rigid[0]=G_rigid[1]; 382 parameters->AddObject(new DoubleVecParam(SealevelriseGRigidEnum,G_rigid,M)); 383 G_elastic[0]=G_elastic[1]; 384 parameters->AddObject(new DoubleVecParam(SealevelriseGElasticEnum,G_elastic,M)); 385 U_elastic[0]=U_elastic[1]; 386 parameters->AddObject(new DoubleVecParam(SealevelriseUElasticEnum,U_elastic,M)); 387 H_elastic[0]=H_elastic[1]; 388 parameters->AddObject(new DoubleVecParam(SealevelriseHElasticEnum,H_elastic,M)); 415 if(elastic){ 416 G_elastic[0]=G_elastic[1]; 417 U_elastic[0]=U_elastic[1]; 418 H_elastic[0]=H_elastic[1]; 419 } 420 389 421 390 422 /*Save our precomputed tables into parameters*/ … … 397 429 398 430 /*free resources: */ 399 xDelete<IssmDouble>(love_h);400 xDelete<IssmDouble>(love_k);401 xDelete<IssmDouble>(love_l);402 xDelete<IssmDouble>(love_th);403 xDelete<IssmDouble>(love_tk);404 xDelete<IssmDouble>(love_tl);405 431 xDelete<IssmDouble>(G_rigid); 406 432 xDelete<IssmDouble>(G_rigid_local); 407 xDelete<IssmDouble>(G_elastic); 408 xDelete<IssmDouble>(G_elastic_local); 409 xDelete<IssmDouble>(U_elastic); 410 xDelete<IssmDouble>(U_elastic_local); 411 xDelete<IssmDouble>(H_elastic); 412 xDelete<IssmDouble>(H_elastic_local); 413 } 433 if(elastic){ 434 xDelete<IssmDouble>(love_h); 435 xDelete<IssmDouble>(love_k); 436 xDelete<IssmDouble>(love_l); 437 xDelete<IssmDouble>(love_th); 438 xDelete<IssmDouble>(love_tk); 439 xDelete<IssmDouble>(love_tl); 440 xDelete<IssmDouble>(G_elastic); 441 xDelete<IssmDouble>(G_elastic_local); 442 xDelete<IssmDouble>(U_elastic); 443 xDelete<IssmDouble>(U_elastic_local); 444 xDelete<IssmDouble>(H_elastic); 445 xDelete<IssmDouble>(H_elastic_local); 446 } 447 } /*}}}*/ 414 448 415 449 /*Indicate we have not yet run the Geometry Core module: */ … … 436 470 /*}}}*/ 437 471 438 /*}}}*/439 472 }/*}}}*/ 440 473 -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r25680 r25763 768 768 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 769 769 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 770 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);770 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 771 771 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 772 772 iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); -
issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
r25610 r25763 105 105 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 106 106 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 107 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);107 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 108 108 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 109 109 if(iomodel->domaintype!=Domain2DhorizontalEnum){ -
issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
r25439 r25763 133 133 iomodel->FetchDataToInput(inputs,elements,"md.geometry.surface",SurfaceEnum); 134 134 iomodel->FetchDataToInput(inputs,elements,"md.geometry.base",BaseEnum); 135 iomodel->FetchDataToInput(inputs,elements,"md.solidearth. sealevel",SealevelEnum,0);135 iomodel->FetchDataToInput(inputs,elements,"md.solidearth.initialsealevel",SealevelEnum,0); 136 136 iomodel->FetchDataToInput(inputs,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 137 137 iomodel->FetchDataToInput(inputs,elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r25758 r25763 5463 5463 this->inputs->SetDoubleInput(AreaEnum,this->lid,area); 5464 5464 this->AddInput(SealevelAreaEnum,&area,P0Enum); 5465 if(!computerigid & !computeelastic)return;5465 if(!computerigid)return; 5466 5466 5467 5467 /*recover precomputed green function kernels:*/ … … 5469 5469 parameter->GetParameterValueByPointer((IssmDouble**)&G_rigid_precomputed,&M); 5470 5470 5471 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseGElasticEnum)); _assert_(parameter); 5472 parameter->GetParameterValueByPointer((IssmDouble**)&G_elastic_precomputed,&M); 5473 5474 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseHElasticEnum)); _assert_(parameter); 5475 parameter->GetParameterValueByPointer((IssmDouble**)&H_elastic_precomputed,&M); 5476 5477 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseUElasticEnum)); _assert_(parameter); 5478 parameter->GetParameterValueByPointer((IssmDouble**)&U_elastic_precomputed,&M); 5471 if(computeelastic){ 5472 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseGElasticEnum)); _assert_(parameter); 5473 parameter->GetParameterValueByPointer((IssmDouble**)&G_elastic_precomputed,&M); 5474 5475 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseHElasticEnum)); _assert_(parameter); 5476 parameter->GetParameterValueByPointer((IssmDouble**)&H_elastic_precomputed,&M); 5477 5478 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseUElasticEnum)); _assert_(parameter); 5479 parameter->GetParameterValueByPointer((IssmDouble**)&U_elastic_precomputed,&M); 5480 } 5479 5481 5480 5482 /*allocate indices:*/ 5481 5483 indices=xNew<IssmDouble>(gsize); 5482 5484 G=xNewZeroInit<IssmDouble>(gsize); 5483 GU=xNewZeroInit<IssmDouble>(gsize); 5484 if(horiz){ 5485 GN=xNewZeroInit<IssmDouble>(gsize); 5486 GE=xNewZeroInit<IssmDouble>(gsize); 5487 } 5488 5489 /* Where is the centroid of this element:{{{*/ 5485 if(computeelastic){ 5486 GU=xNewZeroInit<IssmDouble>(gsize); 5487 if(horiz){ 5488 GN=xNewZeroInit<IssmDouble>(gsize); 5489 GE=xNewZeroInit<IssmDouble>(gsize); 5490 } 5491 } 5492 5493 /* Where is the centroid of this element: 5490 5494 5491 5495 /*retrieve coordinates: */ … … 5515 5519 5516 5520 /*Rigid earth gravitational perturbation: */ 5517 if(computerigid){ 5518 G[i]+=G_rigid_precomputed[index]; 5519 } 5521 G[i]+=G_rigid_precomputed[index]; 5522 5520 5523 if(computeelastic){ 5521 5524 G[i]+=G_elastic_precomputed[index]; … … 5524 5527 5525 5528 /*Elastic components:*/ 5526 GU[i] = constant * U_elastic_precomputed[index]; 5527 if(horiz){ 5528 /*Compute azimuths, both north and east components: */ 5529 x = xx[i]; y = yy[i]; z = zz[i]; 5530 if(latitude[i]==90){ 5531 x=1e-12; y=1e-12; 5532 } 5533 if(latitude[i]==-90){ 5534 x=1e-12; y=1e-12; 5535 } 5536 dx = x_element-x; dy = y_element-y; dz = z_element-z; 5537 N_azim = (-z*x*dx-z*y*dy+(pow(x,2)+pow(y,2))*dz) /pow((pow(x,2)+pow(y,2))*(pow(x,2)+pow(y,2)+pow(z,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5); 5538 E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5); 5539 5540 GN[i] = constant*H_elastic_precomputed[index]*N_azim; 5541 GE[i] = constant*H_elastic_precomputed[index]*E_azim; 5529 if(computeelastic){ 5530 GU[i] = constant * U_elastic_precomputed[index]; 5531 if(horiz){ 5532 /*Compute azimuths, both north and east components: */ 5533 x = xx[i]; y = yy[i]; z = zz[i]; 5534 if(latitude[i]==90){ 5535 x=1e-12; y=1e-12; 5536 } 5537 if(latitude[i]==-90){ 5538 x=1e-12; y=1e-12; 5539 } 5540 dx = x_element-x; dy = y_element-y; dz = z_element-z; 5541 N_azim = (-z*x*dx-z*y*dy+(pow(x,2)+pow(y,2))*dz) /pow((pow(x,2)+pow(y,2))*(pow(x,2)+pow(y,2)+pow(z,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5); 5542 E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5); 5543 5544 GN[i] = constant*H_elastic_precomputed[index]*N_azim; 5545 GE[i] = constant*H_elastic_precomputed[index]*E_azim; 5546 } 5542 5547 } 5543 5548 } … … 5546 5551 this->inputs->SetArrayInput(SealevelriseIndicesEnum,this->lid,indices,gsize); 5547 5552 this->inputs->SetArrayInput(SealevelriseGEnum,this->lid,G,gsize); 5548 this->inputs->SetArrayInput(SealevelriseGUEnum,this->lid,GU,gsize); 5549 if(horiz){ 5550 this->inputs->SetArrayInput(SealevelriseGNEnum,this->lid,GN,gsize); 5551 this->inputs->SetArrayInput(SealevelriseGEEnum,this->lid,GE,gsize); 5553 if(computeelastic){ 5554 this->inputs->SetArrayInput(SealevelriseGUEnum,this->lid,GU,gsize); 5555 if(horiz){ 5556 this->inputs->SetArrayInput(SealevelriseGNEnum,this->lid,GN,gsize); 5557 this->inputs->SetArrayInput(SealevelriseGEEnum,this->lid,GE,gsize); 5558 } 5552 5559 } 5553 5560 … … 5556 5563 delete indices; 5557 5564 delete G; 5558 delete GU; 5559 if(horiz){ 5560 delete GN; 5561 delete GE; 5565 if(computeelastic){ 5566 delete GU; 5567 if(horiz){ 5568 delete GN; 5569 delete GE; 5570 } 5562 5571 } 5563 5572 #else 5564 5573 xDelete(indices); 5565 5574 xDelete(G); 5566 xDelete(GU); 5567 if(horiz){ 5568 xDelete(GN); 5569 xDelete(GE); 5575 if(computeelastic){ 5576 xDelete(GU); 5577 if(horiz){ 5578 xDelete(GN); 5579 xDelete(GE); 5580 } 5570 5581 } 5571 5582 #endif -
issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp
r25757 r25763 24 24 bool isslr=0; 25 25 bool isgia=0; 26 int grd=0; 26 27 int solution_type; 27 28 … … 30 31 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 31 32 femmodel->parameters->FindParam(&save_results,SaveResultsEnum); 33 femmodel->parameters->FindParam(&grd,SolidearthSettingsGRDEnum); 32 34 33 35 /*in case we are running SealevelriseSolutionEnum, then bypass transient settings:*/ … … 59 61 60 62 /*Run geodetic:*/ 61 grd_core(femmodel);63 if(grd)grd_core(femmodel); 62 64 63 65 /*Run steric core for sure:*/ … … 109 111 int frequency,count; 110 112 int horiz; 111 int geodetic=0;112 113 IssmDouble dt; 113 114 IssmDouble oceanarea; 114 115 int bp_compute_fingerprints=0; 115 116 116 /*Should we even be here?:*/ 117 femmodel->parameters->FindParam(&geodetic,SolidearthSettingsComputesealevelchangeEnum); if(!geodetic)return; 118 117 119 118 /*Verbose: */ 120 if(VerboseSolution()) _printf0_(" computing geodetic sea level rise\n");119 if(VerboseSolution()) _printf0_(" computing GRD sea level patterns\n"); 121 120 122 121 /*retrieve more parameters:*/ … … 178 177 RSLg=sealevelrise_core_noneustatic(femmodel,masks,RSLg_eustatic,oceanarea); 179 178 180 /*compute other elastic geodeticsignatures, such as components of 3-D crustal motion: */179 /*compute other elastic signatures, such as components of 3-D crustal motion: */ 181 180 sealevelrise_core_elastic(&U_esa,&U_north_esa,&U_east_esa,femmodel,RSLg,masks); 182 181 183 /*compute viscosus (GIA) geodeticsignatures:*/182 /*compute viscosus (GIA) signatures:*/ 184 183 sealevelrise_core_viscous(&U_gia,&N_gia,femmodel,RSLg); 185 184 … … 269 268 int solution_type; 270 269 IssmDouble dt; 271 int g eodetic=0;270 int grd=0; 272 271 int step; 273 272 IssmDouble time; … … 281 280 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 282 281 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 283 femmodel->parameters->FindParam(&g eodetic,SolidearthSettingsComputesealevelchangeEnum);282 femmodel->parameters->FindParam(&grd,SolidearthSettingsGRDEnum); 284 283 femmodel->parameters->FindParam(&cumgmtslr,CumGmtslrEnum); 285 284 femmodel->parameters->FindParam(&cumbslr,CumBslrEnum); … … 301 300 GetStericRate(&steric_rate_g,femmodel); 302 301 GetDynamicRate(&dynamic_rate_g,femmodel); 303 if(g eodetic){302 if(grd){ 304 303 GetVectorFromInputsx(&U_esa_rate,femmodel,SealevelUEsaRateEnum,VertexSIdEnum); 305 304 GetVectorFromInputsx(&U_gia_rate,femmodel,UGiaRateEnum,VertexSIdEnum); … … 318 317 319 318 /*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate) * dt + steric_rate + dynamic_rate dt*/ 320 if(g eodetic){319 if(grd){ 321 320 SL->AXPY(N_gia_rate,dt); 322 321 SL->AXPY(N_esa_rate,dt); … … 326 325 327 326 /*compute new bedrock position: */ 328 if(g eodetic){327 if(grd){ 329 328 bedrock->AXPY(U_esa_rate,dt); 330 329 bedrock->AXPY(U_gia_rate,dt); … … 340 339 delete steric_rate_g; 341 340 delete dynamic_rate_g; 342 if(g eodetic){341 if(grd){ 343 342 delete U_esa_rate; 344 343 delete U_gia_rate; -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r25751 r25763 351 351 syn keyword cConstant SealevelriseGElasticEnum 352 352 syn keyword cConstant SolidearthSettingsComputesealevelchangeEnum 353 syn keyword cConstant SolidearthSettingsGRDEnum 353 354 syn keyword cConstant SolidearthSettingsGlfractionEnum 354 355 syn keyword cConstant SolidearthSettingsRunFrequencyEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r25751 r25763 345 345 SealevelriseGElasticEnum, 346 346 SolidearthSettingsComputesealevelchangeEnum, 347 SolidearthSettingsGRDEnum, 347 348 SolidearthSettingsGlfractionEnum, 348 349 SolidearthSettingsRunFrequencyEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r25751 r25763 353 353 case SealevelriseGElasticEnum : return "SealevelriseGElastic"; 354 354 case SolidearthSettingsComputesealevelchangeEnum : return "SolidearthSettingsComputesealevelchange"; 355 case SolidearthSettingsGRDEnum : return "SolidearthSettingsGRD"; 355 356 case SolidearthSettingsGlfractionEnum : return "SolidearthSettingsGlfraction"; 356 357 case SolidearthSettingsRunFrequencyEnum : return "SolidearthSettingsRunFrequency"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r25751 r25763 359 359 else if (strcmp(name,"SealevelriseGElastic")==0) return SealevelriseGElasticEnum; 360 360 else if (strcmp(name,"SolidearthSettingsComputesealevelchange")==0) return SolidearthSettingsComputesealevelchangeEnum; 361 else if (strcmp(name,"SolidearthSettingsGRD")==0) return SolidearthSettingsGRDEnum; 361 362 else if (strcmp(name,"SolidearthSettingsGlfraction")==0) return SolidearthSettingsGlfractionEnum; 362 363 else if (strcmp(name,"SolidearthSettingsRunFrequency")==0) return SolidearthSettingsRunFrequencyEnum; … … 382 383 else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum; 383 384 else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum; 384 else if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum; 388 if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum; 389 else if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum; 389 390 else if (strcmp(name,"SmbAccualti")==0) return SmbAccualtiEnum; 390 391 else if (strcmp(name,"SmbAccugrad")==0) return SmbAccugradEnum; … … 505 506 else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum; 506 507 else if (strcmp(name,"InputsSTART")==0) return InputsSTARTEnum; 507 else if (strcmp(name,"Adjoint")==0) return AdjointEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 511 if (strcmp(name,"Adjoint")==0) return AdjointEnum; 512 else if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 512 513 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 513 514 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; … … 628 629 else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum; 629 630 else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum; 630 else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"Frictionf")==0) return FrictionfEnum; 634 if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum; 635 else if (strcmp(name,"Frictionf")==0) return FrictionfEnum; 635 636 else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum; 636 637 else if (strcmp(name,"FrontalForcingsSubglacialDischarge")==0) return FrontalForcingsSubglacialDischargeEnum; … … 751 752 else if (strcmp(name,"SealevelriseGE")==0) return SealevelriseGEEnum; 752 753 else if (strcmp(name,"SealevelriseGN")==0) return SealevelriseGNEnum; 753 else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum; 757 if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum; 758 else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum; 758 759 else if (strcmp(name,"SedimentHeadSubstep")==0) return SedimentHeadSubstepEnum; 759 760 else if (strcmp(name,"SedimentHeadTransient")==0) return SedimentHeadTransientEnum; … … 874 875 else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum; 875 876 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum; 876 else if (strcmp(name,"Area")==0) return AreaEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"SealevelArea")==0) return SealevelAreaEnum; 880 if (strcmp(name,"Area")==0) return AreaEnum; 881 else if (strcmp(name,"SealevelArea")==0) return SealevelAreaEnum; 881 882 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 882 883 else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; … … 997 998 else if (strcmp(name,"Outputdefinition75")==0) return Outputdefinition75Enum; 998 999 else if (strcmp(name,"Outputdefinition76")==0) return Outputdefinition76Enum; 999 else if (strcmp(name,"Outputdefinition77")==0) return Outputdefinition77Enum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition78")==0) return Outputdefinition78Enum; 1003 if (strcmp(name,"Outputdefinition77")==0) return Outputdefinition77Enum; 1004 else if (strcmp(name,"Outputdefinition78")==0) return Outputdefinition78Enum; 1004 1005 else if (strcmp(name,"Outputdefinition79")==0) return Outputdefinition79Enum; 1005 1006 else if (strcmp(name,"Outputdefinition7")==0) return Outputdefinition7Enum; … … 1120 1121 else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum; 1121 1122 else if (strcmp(name,"FemModel")==0) return FemModelEnum; 1122 else if (strcmp(name,"FileParam")==0) return FileParamEnum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum; 1126 if (strcmp(name,"FileParam")==0) return FileParamEnum; 1127 else if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum; 1127 1128 else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum; 1128 1129 else if (strcmp(name,"FloatingAreaScaled")==0) return FloatingAreaScaledEnum; … … 1243 1244 else if (strcmp(name,"MeshX")==0) return MeshXEnum; 1244 1245 else if (strcmp(name,"MeshY")==0) return MeshYEnum; 1245 else if (strcmp(name,"MinVel")==0) return MinVelEnum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"MinVx")==0) return MinVxEnum; 1249 if (strcmp(name,"MinVel")==0) return MinVelEnum; 1250 else if (strcmp(name,"MinVx")==0) return MinVxEnum; 1250 1251 else if (strcmp(name,"MinVy")==0) return MinVyEnum; 1251 1252 else if (strcmp(name,"MinVz")==0) return MinVzEnum; … … 1366 1367 else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum; 1367 1368 else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum; 1368 else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;1369 1369 else stage=12; 1370 1370 } 1371 1371 if(stage==12){ 1372 if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum; 1372 if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum; 1373 else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum; 1373 1374 else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum; 1374 1375 else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum; -
issm/trunk-jpl/src/m/classes/solidearth.m
r25758 r25763 6 6 classdef solidearth 7 7 properties (SetAccess=public) 8 sealevel = NaN;8 initialsealevel = NaN; 9 9 settings = solidearthsettings(); 10 external = []; 10 11 surfaceload = surfaceload(); 11 12 lovenumbers = lovenumbers(); … … 38 39 self.partitionhydro=[]; 39 40 41 %no external solutions by defalt: 42 self.external=[]; 43 40 44 %earth radius 41 45 self.planetradius= planetradius('earth'); … … 48 52 end 49 53 50 md = checkfield(md,'fieldname','solidearth. sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);54 md = checkfield(md,'fieldname','solidearth.initialsealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]); 51 55 md = checkfield(md,'fieldname','solidearth.requested_outputs','stringrow',1); 52 56 … … 55 59 self.lovenumbers.checkconsistency(md,solution,analyses); 56 60 self.rotational.checkconsistency(md,solution,analyses); 61 if ~isempty(self.external), 62 if ~isa(self.external,'solidearthsolution'), 63 error('solidearth consistency check: external field should be a solidearthsolution'); 64 end 65 self.external.checkconsistency(md,solution,analyses); 66 end 57 67 58 68 … … 64 74 disp(sprintf(' solidearth inputs, forcings and settings:')); 65 75 66 fielddisplay(self,' sealevel','current sea level (prior tocomputation) [m]');76 fielddisplay(self,'initialsealevel','sea level at the start of computation) [m]'); 67 77 fielddisplay(self,'planetradius','planet radius [m]'); 68 78 fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps'); … … 70 80 fielddisplay(self,'partitionice','ice partition vector for barystatic contribution'); 71 81 fielddisplay(self,'partitionhydro','hydro partition vector for barystatic contribution'); 82 if isempty(self.external), fielddisplay(self,'external','external solution, of the type solidearthsolution'); end 72 83 self.settings.disp(); 73 84 self.surfaceload.disp(); 74 85 self.lovenumbers.disp(); 75 86 self.rotational.disp(); 87 if ~isempty(self.external), 88 self.external.disp(); 89 end 76 90 77 91 end % }}} 78 92 function marshall(self,prefix,md,fid) % {{{ 79 93 80 WriteData(fid,prefix,'object',self,'fieldname',' sealevel','mattype',1,'format','DoubleMat','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);94 WriteData(fid,prefix,'object',self,'fieldname','initialsealevel','mattype',1,'format','DoubleMat','timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 81 95 WriteData(fid,prefix,'object',self,'fieldname','planetradius','format','Double'); 82 96 WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray'); … … 103 117 self.lovenumbers.marshall(prefix,md,fid); 104 118 self.rotational.marshall(prefix,md,fid); 119 if ~isempty(self.external), 120 self.external.marshall(prefix,md,fid); 121 end 105 122 106 123 %process requested outputs … … 116 133 function savemodeljs(self,fid,modelname) % {{{ 117 134 118 writejs1Darray(fid,[modelname '.solidearth. sealevel'],self.sealevel);135 writejs1Darray(fid,[modelname '.solidearth.initialsealevel'],self.initialsealevel); 119 136 self.settings.savemodeljs(fid,modelname); 120 137 self.surfaceload.savemodeljs(fid,modelname); 121 138 self.lovenumbers.savemodeljs(fid,modelname); 122 139 self.rotational.savemodeljs(fid,modelname); 140 if ~isempty(self.external), 141 self.external.savemodeljs(fid,modelname); 142 end 123 143 writejscellstring(fid,[modelname '.solidearth.requested_outputs'],self.requested_outputs); 124 144 writejscellarray(fid,[modelname '.solidearth.transitions'],self.transitions); … … 126 146 end % }}} 127 147 function self = extrude(self,md) % {{{ 128 self. sealevel=project3d(md,'vector',self.sealevel,'type','node');148 self.initialsealevel=project3d(md,'vector',self.initialsealevel,'type','node'); 129 149 end % }}} 130 150 end -
issm/trunk-jpl/src/m/classes/solidearthsettings.m
r25758 r25763 14 14 ocean_area_scaling = 0; 15 15 runfrequency = 1; %how many time steps we skip before we run grd_core 16 computesealevelchange = 0; %will grd_core compute sea level? 16 computesealevelchange = 1; %will sea-level be coputed? 17 isgrd = 1; %will GRD patterns be computed? 17 18 degacc = 0; %degree increment for resolution of Green tables 18 19 horiz = 0; %compute horizontal deformation … … 42 43 self.rotation=1; 43 44 self.ocean_area_scaling=0; 44 self.computesealevelchange=0; 45 self.isgrd=1; 46 self.computesealevelchange=1; 45 47 46 48 %numerical discretization accuracy … … 70 72 71 73 %a coupler to a planet model is provided. 72 if self. computesealevelchange,74 if self.isgrd, 73 75 if md.transient.iscoupler, 74 76 %we are good; … … 90 92 fielddisplay(self,'maxiter','maximum number of nonlinear iterations'); 91 93 fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area [default: No correction]'); 92 fielddisplay(self,'computesealevelchange','compute sealevel change from GRD in addition to steric?) default 0'); 94 fielddisplay(self,'computesealevelchange','compute sealevel change (default 1)'); 95 fielddisplay(self,'isgrd','compute GRD patterns (default 1)'); 93 96 fielddisplay(self,'runfrequency','how many time steps we skip before we run solidearthsettings solver during transient (default: 1)'); 94 97 fielddisplay(self,'rigid','rigid earth graviational potential perturbation'); … … 110 113 WriteData(fid,prefix,'object',self,'fieldname','horiz','name','md.solidearth.settings.horiz','format','Integer'); 111 114 WriteData(fid,prefix,'object',self,'fieldname','computesealevelchange','name','md.solidearth.settings.computesealevelchange','format','Integer'); 115 WriteData(fid,prefix,'object',self,'fieldname','isgrd','name','md.solidearth.settings.isgrd','format','Integer'); 112 116 WriteData(fid,prefix,'object',self,'fieldname','glfraction','name','md.solidearth.settings.glfraction','format','Integer'); 113 117 end % }}} -
issm/trunk-jpl/src/m/classes/solidearthsolution.m
r25753 r25763 32 32 function md = checkconsistency(self,md,solution,analyses) % {{{ 33 33 34 if ~ismember('SealevelriseAnalysis',analyses) | (strcmp(solution,'TransientSolution') & md.transient.isslr==0), 35 return; 36 end 37 md = checkfield(md,'fieldname','solidearth.solution.displacementeast','Inf',1,'timeseries',1); 38 md = checkfield(md,'fieldname','solidearth.solution.displacementnorth','Inf',1,'timeseries',1); 39 md = checkfield(md,'fieldname','solidearth.solution.displacementup','Inf',1,'timeseries',1); 40 md = checkfield(md,'fieldname','solidearth.solution.geoid','Inf',1,'timeseries',1); 41 md = checkfield(md,'fieldname','solidearth.solution.barystaticsealevel','Inf',1,'timeseries',1); 34 md = checkfield(md,'fieldname','solidearth.external.displacementeast','Inf',1,'timeseries',1); 35 md = checkfield(md,'fieldname','solidearth.external.displacementnorth','Inf',1,'timeseries',1); 36 md = checkfield(md,'fieldname','solidearth.external.displacementup','Inf',1,'timeseries',1); 37 md = checkfield(md,'fieldname','solidearth.external.geoid','Inf',1,'timeseries',1); 38 md = checkfield(md,'fieldname','solidearth.external.barystaticsealevel','Inf',1,'timeseries',1); 42 39 43 40 end % }}} 44 41 function disp(self) % {{{ 45 disp(sprintf(' solidearth solution:'));46 47 42 fielddisplay(self,'displacementeast','solid-Earth Eastwards bedrock motion (m/yr)'); 48 43 fielddisplay(self,'displacementnorth','solid-Earth Northwards bedrock motion (m/yr)'); … … 53 48 end % }}} 54 49 function marshall(self,prefix,md,fid) % {{{ 55 WriteData(fid,prefix,'object',self,'data',1,'name','md.solidearth.external.nature','format','Integer'); %code 1 for father class56 50 yts=md.constants.yts; 57 51 WriteData(fid,prefix,'object',self,'class','solidearthsolution','fieldname','displacementeast','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); -
issm/trunk-jpl/test/NightlyRun/test2002.m
r25181 r25763 8 8 %solidearth loading: {{{ 9 9 md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements,1); 10 md.solidearth. sealevel=zeros(md.mesh.numberofvertices,1);10 md.solidearth.initialsealevel=zeros(md.mesh.numberofvertices,1); 11 11 md.dsl.global_average_thermosteric_sea_level_change=[0;0]; 12 12 md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1); -
issm/trunk-jpl/test/NightlyRun/test2002.py
r25688 r25763 19 19 #solidearth loading: 20 20 md.solidearth.surfaceload.icethicknesschange = np.zeros((md.mesh.numberofelements, 1)) 21 md.solidearth. sealevel = np.zeros((md.mesh.numberofvertices, 1))21 md.solidearth.initialsealevel = np.zeros((md.mesh.numberofvertices, 1)) 22 22 md.dsl.global_average_thermosteric_sea_level_change = np.zeros((2, 1)) 23 23 md.dsl.sea_surface_height_change_above_geoid = np.zeros((md.mesh.numberofvertices + 1, 1)) -
issm/trunk-jpl/test/NightlyRun/test2003.m
r25166 r25763 8 8 %solidearth loading: {{{ 9 9 md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements,1); 10 md.solidearth. sealevel=zeros(md.mesh.numberofvertices,1);10 md.solidearth.initialsealevel=zeros(md.mesh.numberofvertices,1); 11 11 md.dsl.global_average_thermosteric_sea_level_change=[0;0]; 12 12 md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1); -
issm/trunk-jpl/test/NightlyRun/test2003.py
r25182 r25763 19 19 #solidearth loading: {{{ 20 20 md.solidearth.surfaceload.icethicknesschange = np.zeros((md.mesh.numberofelements, )) 21 md.solidearth. sealevel = np.zeros((md.mesh.numberofvertices, ))21 md.solidearth.initialsealevel = np.zeros((md.mesh.numberofvertices, )) 22 22 md.dsl.global_average_thermosteric_sea_level_change=np.zeros((2, )) 23 23 md.dsl.sea_surface_height_change_above_geoid=np.zeros((md.mesh.numberofvertices+1, )) -
issm/trunk-jpl/test/NightlyRun/test2004.m
r25627 r25763 167 167 end 168 168 169 md.solidearth. sealevel=zeros(md.mesh.numberofvertices,1);169 md.solidearth.initialsealevel=zeros(md.mesh.numberofvertices,1); 170 170 171 171 md.dsl.global_average_thermosteric_sea_level_change=[0;0]; … … 302 302 end 303 303 304 md.solidearth. sealevel=zeros(md.mesh.numberofvertices,1);304 md.solidearth.initialsealevel=zeros(md.mesh.numberofvertices,1); 305 305 306 306 md.dsl.global_average_thermosteric_sea_level_change=[0;0]; … … 349 349 sl.transfer('mesh.long'); 350 350 sl.transfer('solidearth.surfaceload.icethicknesschange'); 351 sl.transfer('solidearth. sealevel');351 sl.transfer('solidearth.initialsealevel'); 352 352 sl.transfer('dsl.sea_surface_height_change_above_geoid'); 353 353 sl.transfer('dsl.sea_water_pressure_change_at_sea_floor'); -
issm/trunk-jpl/test/NightlyRun/test2004.py
r25517 r25763 206 206 md.solidearth.surfaceload.icethicknesschange = np.mean(delHAIS[md.mesh.elements - 1], axis=1) / 100 207 207 208 md.solidearth. sealevel = np.zeros((md.mesh.numberofvertices, ))208 md.solidearth.initialsealevel = np.zeros((md.mesh.numberofvertices, )) 209 209 210 210 md.dsl.global_average_thermostatic_sea_level_change = np.zeros((2, 1)) … … 335 335 md.mask.ocean_levelset[pos] = 1 336 336 337 md.solidearth. sealevel = np.zeros((md.mesh.numberofvertices, ))337 md.solidearth.initialsealevel = np.zeros((md.mesh.numberofvertices, )) 338 338 339 339 md.dsl.global_average_thermostatic_sea_level_change = np.zeros((2, 1)) … … 378 378 sl.transfer('mesh.long') 379 379 sl.transfer('solidearth.surfaceload.icethicknesschange') # 380 sl.transfer('solidearth. sealevel')380 sl.transfer('solidearth.initialsealevel') 381 381 sl.transfer('dsl.sea_surface_height_change_above_geoid') 382 382 sl.transfer('dsl.sea_water_pressure_change_at_sea_floor') -
issm/trunk-jpl/test/NightlyRun/test2005.m
r25688 r25763 8 8 %solidearth loading: {{{ 9 9 md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements,1); 10 md.solidearth. sealevel=zeros(md.mesh.numberofvertices,1);10 md.solidearth.initialsealevel=zeros(md.mesh.numberofvertices,1); 11 11 md.dsl.global_average_thermosteric_sea_level_change=[1;0]; 12 12 md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1); -
issm/trunk-jpl/test/NightlyRun/test2005.py
r25688 r25763 19 19 # Solidearth loading #{{{ 20 20 md.solidearth.surfaceload.icethicknesschange = np.zeros((md.mesh.numberofelements, 1)) 21 md.solidearth. sealevel = np.zeros((md.mesh.numberofvertices, 1))21 md.solidearth.initialsealevel = np.zeros((md.mesh.numberofvertices, 1)) 22 22 md.dsl.global_average_thermosteric_sea_level_change = np.zeros((2, 1)) 23 23 md.dsl.sea_surface_height_change_above_geoid = np.zeros((md.mesh.numberofvertices + 1, 1)) -
issm/trunk-jpl/test/NightlyRun/test2006.m
r25698 r25763 9 9 %solidearth loading: {{{ 10 10 md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements,1); 11 md.solidearth. sealevel=zeros(md.mesh.numberofvertices,1);11 md.solidearth.initialsealevel=zeros(md.mesh.numberofvertices,1); 12 12 md.dsl.global_average_thermosteric_sea_level_change=[1;0]; 13 13 md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1); -
issm/trunk-jpl/test/NightlyRun/test2006.py
r25698 r25763 22 22 # Solidearth loading #{{{ 23 23 md.solidearth.surfaceload.icethicknesschange = np.zeros((md.mesh.numberofelements, 1)) 24 md.solidearth. sealevel = np.zeros((md.mesh.numberofvertices, 1))24 md.solidearth.initialsealevel = np.zeros((md.mesh.numberofvertices, 1)) 25 25 md.dsl.global_average_thermosteric_sea_level_change = np.zeros((2, 1)) 26 26 md.dsl.sea_surface_height_change_above_geoid = np.zeros((md.mesh.numberofvertices + 1, 1)) -
issm/trunk-jpl/test/NightlyRun/test2010.m
r25627 r25763 15 15 md.solidearth.surfaceload.icethicknesschange(pos(6:7))=-1; 16 16 17 md.solidearth. sealevel=zeros(md.mesh.numberofvertices,1);17 md.solidearth.initialsealevel=zeros(md.mesh.numberofvertices,1); 18 18 md.dsl.global_average_thermosteric_sea_level_change=[0;0]; 19 19 md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1); -
issm/trunk-jpl/test/NightlyRun/test2010.py
r25651 r25763 27 27 md.solidearth.surfaceload.icethicknesschange[pos[5:7]] = -1 28 28 29 md.solidearth. sealevel = np.zeros(md.mesh.numberofvertices)29 md.solidearth.initialsealevel = np.zeros(md.mesh.numberofvertices) 30 30 md.dsl.global_average_thermosteric_sea_level_change = np.zeros((2, 1)) 31 31 md.dsl.sea_surface_height_change_above_geoid = np.zeros((md.mesh.numberofvertices + 1, 1)) -
issm/trunk-jpl/test/NightlyRun/test2424.m
r25124 r25763 20 20 21 21 md.timestepping.time_step=.1; 22 md.solidearth. sealevel=newforcing(md.timestepping.start_time, md.timestepping.final_time, md.timestepping.time_step,-200,200,md.mesh.numberofvertices);22 md.solidearth.initialsealevel=newforcing(md.timestepping.start_time, md.timestepping.final_time, md.timestepping.time_step,-200,200,md.mesh.numberofvertices); 23 23 24 24 md.cluster=generic('name',oshostname(),'np',3); -
issm/trunk-jpl/test/NightlyRun/test2424.py
r25125 r25763 30 30 31 31 md.timestepping.time_step = .1 32 md.solidearth. sealevel = newforcing(md.timestepping.start_time, md.timestepping.final_time,32 md.solidearth.initialsealevel = newforcing(md.timestepping.start_time, md.timestepping.final_time, 33 33 md.timestepping.time_step, -200., 200., md.mesh.numberofvertices) 34 34 -
issm/trunk-jpl/test/NightlyRun/test2425.m
r25124 r25763 31 31 md.geometry.bed=md.geometry.bed+1000; 32 32 md.geometry.surface=md.geometry.surface+1000; 33 md.solidearth. sealevel=1000*ones(md.mesh.numberofvertices,1);33 md.solidearth.initialsealevel=1000*ones(md.mesh.numberofvertices,1); 34 34 35 35 md=solve(md,'Transient','checkconsistency','no'); -
issm/trunk-jpl/test/NightlyRun/test2425.py
r25125 r25763 39 39 md.geometry.bed = md.geometry.bed + 1000 40 40 md.geometry.surface = md.geometry.surface + 1000 41 md.solidearth. sealevel = 1000 * np.ones((md.mesh.numberofvertices, ))41 md.solidearth.initialsealevel = 1000 * np.ones((md.mesh.numberofvertices, )) 42 42 43 43 md = solve(md, 'Transient', 'checkconsistency', 'no')
Note:
See TracChangeset
for help on using the changeset viewer.