Changeset 21295
- Timestamp:
- 10/19/16 17:03:56 (8 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
r20999 r21295 70 70 parameters->AddObject(iomodel->CopyConstantObject("md.slr.rigid",SealevelriseRigidEnum)); 71 71 parameters->AddObject(iomodel->CopyConstantObject("md.slr.elastic",SealevelriseElasticEnum)); 72 parameters->AddObject(iomodel->CopyConstantObject("md.slr.ocean_area_scaling",SealevelriseOceanAreaScalingEnum)); 72 73 73 74 iomodel->FetchData(&elastic,"md.slr.elastic"); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r21272 r21295 306 306 virtual IssmDouble OceanArea(void)=0; 307 307 virtual void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea)=0; 308 virtual void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDoubleeartharea)=0;309 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 oceanarea,IssmDoubleeartharea)=0;308 virtual void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea)=0; 309 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; 310 310 #endif 311 311 -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r21272 r21295 191 191 IssmDouble OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");}; 192 192 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");}; 193 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDoubleeartharea){_error_("not implemented yet!");};194 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 oceanarea,IssmDoubleeartharea){_error_("not implemented yet!");};193 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea){_error_("not implemented yet!");}; 194 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!");}; 195 195 #endif 196 196 -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r21272 r21295 174 174 #ifdef _HAVE_SEALEVELRISE_ 175 175 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");}; 176 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDoubleeartharea){_error_("not implemented yet!");};177 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 oceanarea,IssmDoubleeartharea){_error_("not implemented yet!");};176 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea){_error_("not implemented yet!");}; 177 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!");}; 178 178 IssmDouble OceanArea(void){_error_("not implemented yet!");}; 179 179 IssmDouble OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r21272 r21295 181 181 #ifdef _HAVE_SEALEVELRISE_ 182 182 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");}; 183 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDoubleeartharea){_error_("not implemented yet!");};184 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 oceanarea,IssmDoubleeartharea){_error_("not implemented yet!");};183 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea){_error_("not implemented yet!");}; 184 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!");}; 185 185 IssmDouble OceanArea(void){_error_("not implemented yet!");}; 186 186 IssmDouble OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r21282 r21295 3895 3895 bool computerigid = true; 3896 3896 bool computeelastic= true; 3897 bool scaleoceanarea= true; 3897 3898 3898 3899 /*early return if we are not on an ice cap:*/ … … 3910 3911 this->parameters->FindParam(&computerigid,SealevelriseRigidEnum); 3911 3912 this->parameters->FindParam(&computeelastic,SealevelriseElasticEnum); 3913 this->parameters->FindParam(&scaleoceanarea,SealevelriseOceanAreaScalingEnum); 3912 3914 3913 3915 /*recover elastic green function:*/ … … 3970 3972 /*Compute eustatic compoent:*/ 3971 3973 _assert_(oceanarea>0.); 3974 if(scaleoceanarea) oceanarea=3.6e+14; // use true ocean area, m^2 3972 3975 eustatic += rho_ice*area*I/(oceanarea*rho_water); 3973 3976 … … 4015 4018 } 4016 4019 /*}}}*/ 4017 void Tria::SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDoubleeartharea){ /*{{{*/4020 void Tria::SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea){ /*{{{*/ 4018 4021 4019 4022 /*diverse:*/ … … 4158 4161 } 4159 4162 /*}}}*/ 4160 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 oceanarea,IssmDoubleeartharea){ /*{{{*/4163 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){ /*{{{*/ 4161 4164 4162 4165 /*diverse:*/ -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r21272 r21295 152 152 IssmDouble OceanAverage(IssmDouble* Sg); 153 153 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea); 154 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDoubleeartharea);155 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 oceanarea,IssmDoubleeartharea);154 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea); 155 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); 156 156 #endif 157 157 /*}}}*/ -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r21272 r21295 2449 2449 IssmDouble* Sg_old=NULL; 2450 2450 2451 IssmDouble oceanarea=0;2452 IssmDouble oceanarea_cpu=0;2453 2451 IssmDouble eartharea=0; 2454 2452 IssmDouble eartharea_cpu=0; … … 2465 2463 for(int i=0;i<ns;i++){ 2466 2464 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 2467 oceanarea_cpu += element->OceanArea();2468 2465 eartharea_cpu += element->GetAreaSpherical(); 2469 2466 } 2470 ISSM_MPI_Reduce (&oceanarea_cpu,&oceanarea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );2471 ISSM_MPI_Bcast(&oceanarea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());2472 2473 2467 ISSM_MPI_Reduce (&eartharea_cpu,&eartharea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); 2474 2468 ISSM_MPI_Bcast(&eartharea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); … … 2485 2479 2486 2480 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 2487 element->SealevelriseNonEustatic(pSgo, Sg_old,latitude,longitude,radius, oceanarea,eartharea);2481 element->SealevelriseNonEustatic(pSgo, Sg_old,latitude,longitude,radius,eartharea); 2488 2482 } 2489 2483 if(i%100==0)pSgo->Assemble(); … … 2500 2494 IssmDouble* Sg=NULL; 2501 2495 2502 IssmDouble oceanarea=0;2503 IssmDouble oceanarea_cpu=0;2504 2496 IssmDouble eartharea=0; 2505 2497 IssmDouble eartharea_cpu=0; … … 2516 2508 for(int i=0;i<ns;i++){ 2517 2509 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 2518 oceanarea_cpu += element->OceanArea();2519 2510 eartharea_cpu += element->GetAreaSpherical(); 2520 2511 } 2521 ISSM_MPI_Reduce (&oceanarea_cpu,&oceanarea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );2522 ISSM_MPI_Bcast(&oceanarea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());2523 2524 2512 ISSM_MPI_Reduce (&eartharea_cpu,&eartharea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); 2525 2513 ISSM_MPI_Bcast(&eartharea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); … … 2533 2521 if(i<ns){ 2534 2522 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 2535 element->SealevelriseGeodetic(pUp,pNorth,pEast,Sg,latitude,longitude,radius,xx,yy,zz, oceanarea,eartharea);2523 element->SealevelriseGeodetic(pUp,pNorth,pEast,Sg,latitude,longitude,radius,xx,yy,zz,eartharea); 2536 2524 } 2537 2525 if(i%100==0){ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r21261 r21295 773 773 SealevelriseRigidEnum, 774 774 SealevelriseElasticEnum, 775 SealevelriseOceanAreaScalingEnum, 775 776 SealevelriseGElasticEnum, 776 777 SealevelriseUElasticEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r21261 r21295 754 754 case SealevelriseRigidEnum : return "SealevelriseRigid"; 755 755 case SealevelriseElasticEnum : return "SealevelriseElastic"; 756 case SealevelriseOceanAreaScalingEnum : return "SealevelriseOceanAreaScaling"; 756 757 case SealevelriseGElasticEnum : return "SealevelriseGElastic"; 757 758 case SealevelriseUElasticEnum : return "SealevelriseUElastic"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r21261 r21295 772 772 else if (strcmp(name,"SealevelriseRigid")==0) return SealevelriseRigidEnum; 773 773 else if (strcmp(name,"SealevelriseElastic")==0) return SealevelriseElasticEnum; 774 else if (strcmp(name,"SealevelriseOceanAreaScaling")==0) return SealevelriseOceanAreaScalingEnum; 774 775 else if (strcmp(name,"SealevelriseGElastic")==0) return SealevelriseGElasticEnum; 775 776 else if (strcmp(name,"SealevelriseUElastic")==0) return SealevelriseUElasticEnum; … … 874 875 else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum; 875 876 else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum; 876 else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum; 880 if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum; 881 else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum; 881 882 else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum; 882 883 else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum; -
issm/trunk-jpl/src/m/classes/slr.js
r21065 r21295 19 19 this.elastic=1; 20 20 this.rotation=1; 21 this.ocean_area_scaling=1; 21 22 22 23 //tidal love numbers: … … 81 82 fielddisplay(this,'elastic','elastic earth graviational potential perturbation'); 82 83 fielddisplay(this,'rotation','rotational earth potential perturbation'); 84 fielddisplay(this,'ocean_area_scaling','correction for model representation of ocean area'); 83 85 fielddisplay(this,'degacc',"accuracy (default .01 deg) for numerical discretization of the Green's functions"); 84 86 fielddisplay(this,'transitions','indices into parts of the mesh that will be icecaps'); … … 100 102 WriteData(fid,prefix,'object',this,'fieldname','elastic','format','Boolean'); 101 103 WriteData(fid,prefix,'object',this,'fieldname','rotation','format','Boolean'); 104 WriteData(fid,prefix,'object',this,'fieldname','ocean_area_scaling','format','Boolean'); 102 105 WriteData(fid,prefix,'object',this,'fieldname','degacc','format','Double'); 103 106 WriteData(fid,prefix,'object',this,'fieldname','transitions','format','MatArray'); … … 128 131 this.elastic=NullFix(this.elastic,NaN); 129 132 this.rotation=NullFix(this.rotation,NaN); 133 this.ocean_area_scaling=NullFix(this.ocean_area_scaling,NaN); 130 134 this.degacc=NullFix(this.degacc,NaN); 131 135 }//}}} … … 145 149 this.elastic = 0; 146 150 this.rotation = 0; 151 this.ocean_area_scaling = 0; 147 152 this.degacc = 0; 148 153 this.requested_outputs = []; -
issm/trunk-jpl/src/m/classes/slr.m
r21049 r21295 19 19 elastic = 0; 20 20 rotation = 0; 21 ocean_area_scaling = 0; 21 22 degacc = 0; 22 23 requested_outputs = {}; … … 45 46 self.elastic=1; 46 47 self.rotation=1; 48 self.ocean_area_scaling=1; 47 49 48 50 %tidal love numbers: … … 106 108 fielddisplay(self,'tide_love_k','tidal load Love number (deg 2)'); 107 109 fielddisplay(self,'tide_love_h','tidal load Love number (deg 2)'); 108 fielddisplay(self,'rotation','earth rotational potential perturbation');109 110 fielddisplay(self,'rigid','rigid earth graviational potential perturbation'); 110 111 fielddisplay(self,'elastic','elastic earth graviational potential perturbation'); 112 fielddisplay(self,'rotation','earth rotational potential perturbation'); 113 fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area'); 111 114 fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions'); 112 115 fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps'); … … 128 131 WriteData(fid,prefix,'object',self,'fieldname','elastic','format','Boolean'); 129 132 WriteData(fid,prefix,'object',self,'fieldname','rotation','format','Boolean'); 133 WriteData(fid,prefix,'object',self,'fieldname','ocean_area_scaling','format','Boolean'); 130 134 WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double'); 131 135 WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray'); … … 154 158 writejsdouble(fid,[modelname '.slr.tide_love_h'],self.tide_love_h); 155 159 writejsdouble(fid,[modelname '.slr.rigid'],self.rigid); 160 writejsdouble(fid,[modelname '.slr.elastic'],self.elastic); 156 161 writejsdouble(fid,[modelname '.slr.rotation'],self.rotation); 157 writejsdouble(fid,[modelname '.slr. elastic'],self.elastic);162 writejsdouble(fid,[modelname '.slr.ocean_area_scaling'],self.ocean_area_scaling); 158 163 writejsdouble(fid,[modelname '.slr.degacc'],self.degacc); 159 164 writejscellstring(fid,[modelname '.slr.requested_outputs'],self.requested_outputs); -
issm/trunk-jpl/src/m/classes/slr.py
r21097 r21295 28 28 self.elastic = 0 29 29 self.rotation = 0 30 self.ocean_area_scaling = 0; 30 31 self.degacc = 0 31 32 self.requested_outputs = [] … … 49 50 string="%s\n%s"%(string,fielddisplay(self,'elastic','elastic earth graviational potential perturbation')) 50 51 string="%s\n%s"%(string,fielddisplay(self,'rotation','earth rotational potential perturbation')) 52 string="%s\n%s"%(string,fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area')) 51 53 string="%s\n%s"%(string,fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions')) 52 54 string="%s\n%s"%(string,fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps')) … … 68 70 self.elastic=1 69 71 self.rotation=1 72 self.ocean_area_scaling=1 70 73 71 74 #tidal love numbers: … … 127 130 WriteData(fid,prefix,'object',self,'fieldname','elastic','format','Boolean') 128 131 WriteData(fid,prefix,'object',self,'fieldname','rotation','format','Boolean') 132 WriteData(fid,prefix,'object',self,'fieldname','ocean_area_scaling','format','Boolean') 129 133 WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double') 130 134 WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray')
Note:
See TracChangeset
for help on using the changeset viewer.