Changeset 22114
- Timestamp:
- 09/19/17 16:01:01 (8 years ago)
- Location:
- issm/branches/trunk-larour-NatGeoScience2016/src
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/SealevelriseAnalysis.cpp
r22108 r22114 86 86 parameters->AddObject(iomodel->CopyConstantObject("md.slr.loop_increment",SealevelriseLoopIncrementEnum)); 87 87 parameters->AddObject(iomodel->CopyConstantObject("md.slr.rigid",SealevelriseRigidEnum)); 88 parameters->AddObject(iomodel->CopyConstantObject("md.slr.horiz",SealevelriseHorizEnum)); 88 89 parameters->AddObject(iomodel->CopyConstantObject("md.slr.elastic",SealevelriseElasticEnum)); 89 90 parameters->AddObject(iomodel->CopyConstantObject("md.slr.run_frequency",SealevelriseRunFrequencyEnum)); -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/Elements/Element.h
r21759 r22114 315 315 virtual void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea)=0; 316 316 virtual void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea)=0; 317 virtual void SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea )=0;317 virtual void SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea,int horiz)=0; 318 318 #endif 319 319 -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/Elements/Penta.h
r21759 r22114 198 198 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");}; 199 199 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea){_error_("not implemented yet!");}; 200 void SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea ){_error_("not implemented yet!");};200 void SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea,int horiz){_error_("not implemented yet!");}; 201 201 #endif 202 202 -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/Elements/Seg.h
r21759 r22114 178 178 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");}; 179 179 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea){_error_("not implemented yet!");}; 180 void SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea ){_error_("not implemented yet!");};180 void SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea,int horiz){_error_("not implemented yet!");}; 181 181 IssmDouble OceanArea(void){_error_("not implemented yet!");}; 182 182 IssmDouble OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");}; -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/Elements/Tetra.h
r21759 r22114 185 185 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");}; 186 186 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea){_error_("not implemented yet!");}; 187 void SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea ){_error_("not implemented yet!");};187 void SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea,int horiz){_error_("not implemented yet!");}; 188 188 IssmDouble OceanArea(void){_error_("not implemented yet!");}; 189 189 IssmDouble OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");}; -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/Elements/Tria.cpp
r21759 r22114 4335 4335 } 4336 4336 /*}}}*/ 4337 void Tria::SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea ){ /*{{{*/4337 void Tria::SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea,int horiz){ /*{{{*/ 4338 4338 4339 4339 /*diverse:*/ … … 4359 4359 IssmDouble* N_elastic= NULL; 4360 4360 IssmDouble* E_elastic= NULL; 4361 DoubleVecParam* U_parameter = NULL; 4362 DoubleVecParam* H_parameter = NULL; 4363 IssmDouble* U_values=NULL; 4364 IssmDouble* N_values=NULL; 4365 IssmDouble* E_values=NULL; 4361 4366 4362 4367 /*optimization:*/ … … 4433 4438 4434 4439 /*recover elastic Green's functions for displacement:*/ 4435 DoubleVecParam* U_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseUElasticEnum)); _assert_(U_parameter); 4436 DoubleVecParam* H_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseHElasticEnum)); _assert_(H_parameter); 4440 U_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseUElasticEnum)); _assert_(U_parameter); 4437 4441 U_parameter->GetParameterValueByPointer(&U_elastic_precomputed,&M); 4438 H_parameter->GetParameterValueByPointer(&H_elastic_precomputed,&M); 4442 if(horiz){ 4443 H_parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseHElasticEnum)); _assert_(H_parameter); 4444 H_parameter->GetParameterValueByPointer(&H_elastic_precomputed,&M); 4445 } 4439 4446 4440 4447 /*From Sg, recover water sea level rise:*/ … … 4448 4455 /*initialize: */ 4449 4456 U_elastic=xNewZeroInit<IssmDouble>(gsize); 4450 N_elastic=xNewZeroInit<IssmDouble>(gsize); 4451 E_elastic=xNewZeroInit<IssmDouble>(gsize); 4457 if(horiz){ 4458 N_elastic=xNewZeroInit<IssmDouble>(gsize); 4459 E_elastic=xNewZeroInit<IssmDouble>(gsize); 4460 } 4452 4461 4453 4462 int* indices=xNew<int>(gsize); 4454 IssmDouble* U_values=xNewZeroInit<IssmDouble>(gsize); 4455 IssmDouble* N_values=xNewZeroInit<IssmDouble>(gsize); 4456 IssmDouble* E_values=xNewZeroInit<IssmDouble>(gsize); 4463 U_values=xNewZeroInit<IssmDouble>(gsize); 4464 if(horiz){ 4465 N_values=xNewZeroInit<IssmDouble>(gsize); 4466 E_values=xNewZeroInit<IssmDouble>(gsize); 4467 } 4457 4468 IssmDouble alpha; 4458 4469 IssmDouble delPhi,delLambda; … … 4479 4490 } 4480 4491 dx = x_element-x; dy = y_element-y; dz = z_element-z; 4481 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); 4482 E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5); 4492 if(horiz){ 4493 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); 4494 E_azim = (-y*dx+x*dy) /pow((pow(x,2)+pow(y,2))*(pow(dx,2)+pow(dy,2)+pow(dz,2)),0.5); 4495 } 4483 4496 4484 4497 /*Elastic component (from Eq 17 in Adhikari et al, GMD 2015): */ 4485 4498 int index=reCast<int,IssmDouble>(alpha/PI*(M-1)); 4486 4499 U_elastic[i] += U_elastic_precomputed[index]; 4487 N_elastic[i] += H_elastic_precomputed[index]*N_azim; 4488 E_elastic[i] += H_elastic_precomputed[index]*E_azim; 4500 if(horiz){ 4501 N_elastic[i] += H_elastic_precomputed[index]*N_azim; 4502 E_elastic[i] += H_elastic_precomputed[index]*E_azim; 4503 } 4489 4504 4490 4505 /*Add all components to the pUp solution vectors:*/ 4491 4506 if(this->inputs->Max(MaskIceLevelsetEnum)<0){ 4492 4507 U_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*U_elastic[i]; 4493 N_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*N_elastic[i]; 4494 E_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*E_elastic[i]; 4508 if(horiz){ 4509 N_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*N_elastic[i]; 4510 E_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*E_elastic[i]; 4511 } 4495 4512 } 4496 4513 else if(IsWaterInElement()) { 4497 4514 U_values[i]+=3*rho_water/rho_earth*area/eartharea*S*U_elastic[i]; 4498 N_values[i]+=3*rho_water/rho_earth*area/eartharea*S*N_elastic[i]; 4499 E_values[i]+=3*rho_water/rho_earth*area/eartharea*S*E_elastic[i]; 4515 if(horiz){ 4516 N_values[i]+=3*rho_water/rho_earth*area/eartharea*S*N_elastic[i]; 4517 E_values[i]+=3*rho_water/rho_earth*area/eartharea*S*E_elastic[i]; 4518 } 4500 4519 } 4501 4520 } 4502 4521 pUp->SetValues(gsize,indices,U_values,ADD_VAL); 4503 pNorth->SetValues(gsize,indices,N_values,ADD_VAL); 4504 pEast->SetValues(gsize,indices,E_values,ADD_VAL); 4522 if(horiz){ 4523 pNorth->SetValues(gsize,indices,N_values,ADD_VAL); 4524 pEast->SetValues(gsize,indices,E_values,ADD_VAL); 4525 } 4505 4526 4506 4527 /*free ressources:*/ 4507 4528 xDelete<int>(indices); 4508 xDelete<IssmDouble>(U_values); xDelete<IssmDouble>(N_values); xDelete<IssmDouble>(E_values); 4509 xDelete<IssmDouble>(U_elastic); xDelete<IssmDouble>(N_elastic); xDelete<IssmDouble>(E_elastic); 4529 xDelete<IssmDouble>(U_values); 4530 xDelete<IssmDouble>(U_elastic); 4531 if(horiz){ 4532 xDelete<IssmDouble>(N_values); xDelete<IssmDouble>(E_values); 4533 xDelete<IssmDouble>(N_elastic); xDelete<IssmDouble>(E_elastic); 4534 } 4510 4535 4511 4536 return; -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/Elements/Tria.h
r21759 r22114 156 156 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea); 157 157 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea); 158 void SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea );158 void SealevelriseGeodetic(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* Sg,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz,IssmDouble eartharea,int horiz); 159 159 #endif 160 160 /*}}}*/ -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/FemModel.cpp
r22108 r22114 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,int loop ){/*{{{*/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,int horiz){/*{{{*/ 2609 2609 2610 2610 /*serialized vectors:*/ … … 2639 2639 if(VerboseConvergence())if(i%100==0)_printf0_("\r" << " convolution progress: " << (double)i/(double)ns*100 << "% "); 2640 2640 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 2641 element->SealevelriseGeodetic(pUp,pNorth,pEast,Sg,latitude,longitude,radius,xx,yy,zz,eartharea );2641 element->SealevelriseGeodetic(pUp,pNorth,pEast,Sg,latitude,longitude,radius,xx,yy,zz,eartharea,horiz); 2642 2642 } 2643 2643 if(i%loop==0){ 2644 2644 pUp->Assemble(); 2645 pNorth->Assemble(); 2646 pEast->Assemble(); 2645 if (horiz){ 2646 pNorth->Assemble(); 2647 pEast->Assemble(); 2648 } 2647 2649 } 2648 2650 } … … 2650 2652 /*One last time: */ 2651 2653 pUp->Assemble(); 2652 pNorth->Assemble(); 2653 pEast->Assemble(); 2654 if(horiz){ 2655 pNorth->Assemble(); 2656 pEast->Assemble(); 2657 } 2654 2658 2655 2659 /*Free ressources:*/ -
issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/FemModel.h
r22108 r22114 129 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,int loop );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,int horiz); 132 132 IssmDouble SealevelriseOceanAverage(Vector<IssmDouble>* Sg); 133 133 #endif -
issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core.cpp
r22108 r22114 37 37 int frequency; 38 38 int loop; 39 int horiz; 39 40 40 41 /*Recover some parameters: */ … … 45 46 femmodel->parameters->FindParam(&iscoupler,TransientIscouplerEnum); 46 47 femmodel->parameters->FindParam(&loop,SealevelriseLoopIncrementEnum); 48 femmodel->parameters->FindParam(&horiz,SealevelriseHorizEnum); 47 49 48 50 /*first, recover lat,long and radius vectors from vertices: */ … … 101 103 /*Initialize:*/ 102 104 U_radial = new Vector<IssmDouble>(gsize); 103 U_north = new Vector<IssmDouble>(gsize); 104 U_east = new Vector<IssmDouble>(gsize); 105 if (horiz){ 106 U_north = new Vector<IssmDouble>(gsize); 107 U_east = new Vector<IssmDouble>(gsize); 108 } 105 109 Sg_absolute = new Vector<IssmDouble>(gsize); 106 110 107 111 /*call the geodetic main modlule:*/ 108 femmodel->SealevelriseGeodetic(U_radial,U_north,U_east,Sg,latitude,longitude,radius,xx,yy,zz,loop );112 femmodel->SealevelriseGeodetic(U_radial,U_north,U_east,Sg,latitude,longitude,radius,xx,yy,zz,loop,horiz); 109 113 110 114 /*Now deal with steric ocean expansion by just shifting Sg by a spatial rate pattern : */ … … 119 123 /*get results into elements:*/ 120 124 InputUpdateFromVectorx(femmodel,U_radial,SealevelUmotionEnum,VertexSIdEnum); // radial displacement 121 InputUpdateFromVectorx(femmodel,U_north,SealevelNmotionEnum,VertexSIdEnum); // north motion 122 InputUpdateFromVectorx(femmodel,U_east,SealevelEmotionEnum,VertexSIdEnum); // east motion 125 if (horiz){ 126 InputUpdateFromVectorx(femmodel,U_north,SealevelNmotionEnum,VertexSIdEnum); // north motion 127 InputUpdateFromVectorx(femmodel,U_east,SealevelEmotionEnum,VertexSIdEnum); // east motion 128 } 123 129 InputUpdateFromVectorx(femmodel,Sg_absolute,SealevelAbsoluteEnum,VertexSIdEnum); //absolute sea level 124 130 InputUpdateFromVectorx(femmodel,Sg,SealevelEnum,VertexSIdEnum); //relative sea level … … 137 143 /*Free ressources:*/ 138 144 delete U_radial; 139 delete U_north; 140 delete U_east; 145 if(horiz){ 146 delete U_north; 147 delete U_east; 148 } 141 149 delete Sg_absolute; 142 150 delete Sg_eustatic; -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumDefinitions.h
r22108 r22114 794 794 SealevelriseMaxiterEnum, 795 795 SealevelriseLoopIncrementEnum, 796 SealevelriseHorizEnum, 796 797 SealevelriseReltolEnum, 797 798 SealevelriseAbstolEnum, -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumToStringx.cpp
r22108 r22114 774 774 case SealevelriseMaxiterEnum : return "SealevelriseMaxiter"; 775 775 case SealevelriseLoopIncrementEnum : return "SealevelriseLoopIncrement"; 776 case SealevelriseHorizEnum : return "SealevelriseHoriz"; 776 777 case SealevelriseReltolEnum : return "SealevelriseReltol"; 777 778 case SealevelriseAbstolEnum : return "SealevelriseAbstol"; -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/StringToEnumx.cpp
r22108 r22114 792 792 else if (strcmp(name,"SealevelriseMaxiter")==0) return SealevelriseMaxiterEnum; 793 793 else if (strcmp(name,"SealevelriseLoopIncrement")==0) return SealevelriseLoopIncrementEnum; 794 else if (strcmp(name,"SealevelriseHoriz")==0) return SealevelriseHorizEnum; 794 795 else if (strcmp(name,"SealevelriseReltol")==0) return SealevelriseReltolEnum; 795 796 else if (strcmp(name,"SealevelriseAbstol")==0) return SealevelriseAbstolEnum; … … 874 875 else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum; 875 876 else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum; 876 else if (strcmp(name,"VectorParam")==0) return VectorParamEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 880 if (strcmp(name,"VectorParam")==0) return VectorParamEnum; 881 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 881 882 else if (strcmp(name,"Segment")==0) return SegmentEnum; 882 883 else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum; … … 997 998 else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum; 998 999 else if (strcmp(name,"P2")==0) return P2Enum; 999 else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum; 1003 if (strcmp(name,"P2bubble")==0) return P2bubbleEnum; 1004 else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum; 1004 1005 else if (strcmp(name,"P2xP1")==0) return P2xP1Enum; 1005 1006 else if (strcmp(name,"P1xP2")==0) return P1xP2Enum; -
issm/branches/trunk-larour-NatGeoScience2016/src/m/classes/slr.m
r22091 r22114 28 28 run_frequency = 1; %how many time steps we skip before we run SLR solver during transient 29 29 degacc = 0; 30 loop_increment = 0; 31 horiz = 0; 30 32 requested_outputs = {}; 31 33 transitions = {}; … … 48 50 %maximum of non-linear iterations. 49 51 self.maxiter=10; 52 self.loop_increment=200; 50 53 51 54 %computational flags: … … 84 87 %transitions should be a cell array of vectors: 85 88 self.transitions={}; 89 90 %horizontal displacement? (not by default) 91 self.horiz=0; 86 92 87 93 end % }}} … … 108 114 md = checkfield(md,'fieldname','slr.degacc','size',[1 1],'>=',1e-10); 109 115 md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1); 116 md = checkfield(md,'fieldname','slr.loop_increment','NaN',1,'Inf',1,'>=',1); 117 md = checkfield(md,'fieldname','slr.horiz','NaN',1,'Inf',1,'values',[0 1]); 110 118 111 119 %check that love numbers are provided at the same level of accuracy: … … 182 190 WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double'); 183 191 WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray'); 192 WriteData(fid,prefix,'object',self,'fieldname','loop_increment','format','Integer'); 193 WriteData(fid,prefix,'object',self,'fieldname','horiz','format','Integer'); 184 194 185 195 %process requested outputs
Note:
See TracChangeset
for help on using the changeset viewer.