Changeset 22108
- Timestamp:
- 09/19/17 13:16:19 (8 years ago)
- Location:
- issm/branches/trunk-larour-NatGeoScience2016/src/c
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/SealevelriseAnalysis.cpp
r21759 r22108 84 84 parameters->AddObject(iomodel->CopyConstantObject("md.slr.abstol",SealevelriseAbstolEnum)); 85 85 parameters->AddObject(iomodel->CopyConstantObject("md.slr.maxiter",SealevelriseMaxiterEnum)); 86 parameters->AddObject(iomodel->CopyConstantObject("md.slr.loop_increment",SealevelriseLoopIncrementEnum)); 86 87 parameters->AddObject(iomodel->CopyConstantObject("md.slr.rigid",SealevelriseRigidEnum)); 87 88 parameters->AddObject(iomodel->CopyConstantObject("md.slr.elastic",SealevelriseElasticEnum)); -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/FemModel.cpp
r22106 r22108 2422 2422 #endif 2423 2423 #ifdef _HAVE_SEALEVELRISE_ 2424 void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius ) { /*{{{*/2424 void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,int loop) { /*{{{*/ 2425 2425 2426 2426 /*serialized vectors:*/ … … 2464 2464 eustatic_cpu+=eustatic_cpu_e; 2465 2465 } 2466 if(i% 100==0)pSgi->Assemble();2466 if(i%loop==0)pSgi->Assemble(); 2467 2467 } 2468 2468 if(VerboseConvergence())_printf0_("\n"); … … 2481 2481 } 2482 2482 /*}}}*/ 2483 void FemModel::SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, bool verboseconvolution ){/*{{{*/2483 void FemModel::SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, bool verboseconvolution,int loop){/*{{{*/ 2484 2484 2485 2485 /*serialized vectors:*/ … … 2517 2517 element->SealevelriseNonEustatic(pSgo,Sg_old,latitude,longitude,radius,eartharea); 2518 2518 } 2519 if(i% 100==0)pSgo->Assemble();2519 if(i%loop==0)pSgo->Assemble(); 2520 2520 } 2521 2521 if(verboseconvolution)if(VerboseConvergence())_printf_("\n"); … … 2606 2606 } 2607 2607 /*}}}*/ 2608 void FemModel::SealevelriseGeodetic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz ){/*{{{*/2608 void FemModel::SealevelriseGeodetic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz,int loop){/*{{{*/ 2609 2609 2610 2610 /*serialized vectors:*/ … … 2641 2641 element->SealevelriseGeodetic(pUp,pNorth,pEast,Sg,latitude,longitude,radius,xx,yy,zz,eartharea); 2642 2642 } 2643 if(i% 100==0){2643 if(i%loop==0){ 2644 2644 pUp->Assemble(); 2645 2645 pNorth->Assemble(); -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/FemModel.h
r21759 r22108 126 126 #endif 127 127 #ifdef _HAVE_SEALEVELRISE_ 128 void SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius );129 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,bool verboseconvolution );128 void SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,int loop); 129 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,bool verboseconvolution,int loop); 130 130 void SealevelriseRotationalFeedback(Vector<IssmDouble>* pSgo_rot, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius); 131 void SealevelriseGeodetic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz );131 void SealevelriseGeodetic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz,int loop); 132 132 IssmDouble SealevelriseOceanAverage(Vector<IssmDouble>* Sg); 133 133 #endif -
issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core.cpp
r21761 r22108 36 36 IssmDouble dt,steric_rate; 37 37 int frequency; 38 int loop; 38 39 39 40 /*Recover some parameters: */ … … 43 44 femmodel->parameters->FindParam(&isslr,TransientIsslrEnum); 44 45 femmodel->parameters->FindParam(&iscoupler,TransientIscouplerEnum); 46 femmodel->parameters->FindParam(&loop,SealevelriseLoopIncrementEnum); 45 47 46 48 /*first, recover lat,long and radius vectors from vertices: */ … … 104 106 105 107 /*call the geodetic main modlule:*/ 106 femmodel->SealevelriseGeodetic(U_radial,U_north,U_east,Sg,latitude,longitude,radius,xx,yy,zz );108 femmodel->SealevelriseGeodetic(U_radial,U_north,U_east,Sg,latitude,longitude,radius,xx,yy,zz,loop); 107 109 108 110 /*Now deal with steric ocean expansion by just shifting Sg by a spatial rate pattern : */ -
issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core_eustatic.cpp
r21079 r22108 22 22 IssmDouble *longitude = NULL; 23 23 IssmDouble *radius = NULL; 24 int loop; 24 25 25 26 /*outputs:*/ … … 28 29 /*recover parameters:*/ 29 30 femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum); 31 femmodel->parameters->FindParam(&loop,SealevelriseLoopIncrementEnum); 30 32 31 33 /*first, recover lat,long and radius vectors from vertices: */ … … 39 41 40 42 /*call the eustatic main module: */ 41 femmodel->SealevelriseEustatic(Sgi,&eustatic, latitude, longitude, radius ); //this computes43 femmodel->SealevelriseEustatic(Sgi,&eustatic, latitude, longitude, radius,loop); //this computes 42 44 43 45 /*we need to average Sgi over the ocean: RHS term 4 in Eq.4 of Farrel and clarke. Only the elements can do that: */ -
issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core_noneustatic.cpp
r21759 r22108 37 37 IssmDouble *radius = NULL; 38 38 IssmDouble eustatic; 39 int loop; 39 40 40 41 /*Recover some parameters: */ … … 43 44 femmodel->parameters->FindParam(&eps_abs,SealevelriseAbstolEnum); 44 45 femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum); 46 femmodel->parameters->FindParam(&loop,SealevelriseLoopIncrementEnum); 45 47 46 48 /*computational flag: */ … … 75 77 76 78 /*call the non eustatic module: */ 77 femmodel->SealevelriseNonEustatic(Sgo, Sg_old, latitude, longitude, radius,verboseconvolution );79 femmodel->SealevelriseNonEustatic(Sgo, Sg_old, latitude, longitude, radius,verboseconvolution,loop); 78 80 79 81 /*assemble solution vector: */ -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumDefinitions.h
r21756 r22108 793 793 SealevelriseSpcthicknessEnum, 794 794 SealevelriseMaxiterEnum, 795 SealevelriseLoopIncrementEnum, 795 796 SealevelriseReltolEnum, 796 797 SealevelriseAbstolEnum, -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumToStringx.cpp
r21756 r22108 773 773 case SealevelriseSpcthicknessEnum : return "SealevelriseSpcthickness"; 774 774 case SealevelriseMaxiterEnum : return "SealevelriseMaxiter"; 775 case SealevelriseLoopIncrementEnum : return "SealevelriseLoopIncrement"; 775 776 case SealevelriseReltolEnum : return "SealevelriseReltol"; 776 777 case SealevelriseAbstolEnum : return "SealevelriseAbstol"; -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/StringToEnumx.cpp
r21756 r22108 791 791 else if (strcmp(name,"SealevelriseSpcthickness")==0) return SealevelriseSpcthicknessEnum; 792 792 else if (strcmp(name,"SealevelriseMaxiter")==0) return SealevelriseMaxiterEnum; 793 else if (strcmp(name,"SealevelriseLoopIncrement")==0) return SealevelriseLoopIncrementEnum; 793 794 else if (strcmp(name,"SealevelriseReltol")==0) return SealevelriseReltolEnum; 794 795 else if (strcmp(name,"SealevelriseAbstol")==0) return SealevelriseAbstolEnum; … … 874 875 else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum; 875 876 else if (strcmp(name,"VectorParam")==0) return VectorParamEnum; 876 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Segment")==0) return SegmentEnum; 880 if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 881 else if (strcmp(name,"Segment")==0) return SegmentEnum; 881 882 else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum; 882 883 else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum; … … 997 998 else if (strcmp(name,"P2")==0) return P2Enum; 998 999 else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum; 999 else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"P2xP1")==0) return P2xP1Enum; 1003 if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum; 1004 else if (strcmp(name,"P2xP1")==0) return P2xP1Enum; 1004 1005 else if (strcmp(name,"P1xP2")==0) return P1xP2Enum; 1005 1006 else if (strcmp(name,"P1xP3")==0) return P1xP3Enum;
Note:
See TracChangeset
for help on using the changeset viewer.