Changeset 21329
- Timestamp:
- 10/30/16 22:36:56 (8 years ago)
- Location:
- issm/branches/trunk-larour-NatGeoScience2016/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/SealevelriseAnalysis.cpp
r21327 r21329 19 19 }/*}}}*/ 20 20 void SealevelriseAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/ 21 21 22 22 23 /*Update elements: */ … … 38 39 iomodel->FetchDataToInput(elements,"md.slr.spcthickness",SealevelriseSpcthicknessEnum); 39 40 iomodel->FetchDataToInput(elements,"md.slr.sealevel",SealevelEnum,0); 40 41 42 /*Initialize cumdeltalthickness input: unfortunately, we don't have femmodel, so we need to iterate on 43 *elements, otherwise we would have used InputUpdateFromConstantx: */ 44 for(int i=0;i<iomodel->numberofelements;i++){ 45 if(iomodel->my_elements[i]){ 46 Element* element=(Element*)elements->GetObjectByOffset(counter); 47 element->InputUpdateFromConstant(0,SealevelriseCumDeltathicknessEnum); 48 counter++; 49 } 50 } 51 41 52 }/*}}}*/ 42 53 void SealevelriseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/ … … 74 85 parameters->AddObject(iomodel->CopyConstantObject("md.slr.ocean_area_scaling",SealevelriseOceanAreaScalingEnum)); 75 86 parameters->AddObject(iomodel->CopyConstantObject("md.slr.steric_rate",SealevelriseStericRateEnum)); 87 parameters->AddObject(iomodel->CopyConstantObject("md.slr.run_frequency",SealevelriseRunFrequencyEnum)); 88 parameters->SetParam(1,SealevelriseRunCountEnum); 76 89 77 90 iomodel->FetchData(&elastic,"md.slr.elastic"); -
issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/cores.h
r21311 r21329 65 65 void TransferSealevel(FemModel* femmodel,int forcingenum); 66 66 void EarthMassTransport(FemModel* femmodel); 67 bool SlrAccumulateDeltaThickness(FemModel* femmodel); 67 68 68 69 //solution configuration -
issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core.cpp
r21326 r21329 88 88 89 89 /*call sea-level rise sub cores:*/ 90 if(isslr){ 90 if(isslr && !SlrAccumulateDeltaThickness(femmodel)){ 91 91 92 Sg_eustatic=sealevelrise_core_eustatic(femmodel); //generalized eustatic (Farrel and Clark, Eq 4, 1st, 3rd and 4rd terms on the RHS. 92 93 … … 412 413 413 414 } /*}}}*/ 415 bool SlrAccumulateDeltaThickness(FemModel* femmodel){ /*{{{*/ 416 417 Vector<IssmDouble>* deltathickness=NULL; 418 Vector<IssmDouble>* cumdeltathickness=NULL; 419 IssmDouble frequency=1; 420 int count; 421 422 femmodel->parameters->FindParam(&frequency,SealevelriseRunFrequencyEnum); 423 femmodel->parameters->FindParam(&count,SealevelriseRunCountEnum); 424 425 if (count==frequency){ 426 femmodel->parameters->SetParam(1,SealevelriseRunCountEnum); //reset counter. 427 428 /*increment delta thickness load: */ 429 GetVectorFromInputsx(&cumdeltathickness,femmodel,SealevelriseCumDeltathicknessEnum,VertexSIdEnum); 430 GetVectorFromInputsx(&deltathickness,femmodel,SealevelriseDeltathicknessEnum,VertexSIdEnum); 431 432 cumdeltathickness->AXPY(deltathickness,1); 433 434 /*update deltathickness with the final cumulated thickness: */ 435 InputUpdateFromVectorx(femmodel,cumdeltathickness,SealevelriseDeltathicknessEnum,VertexSIdEnum); 436 437 /*reset cumulative thickness to 0: */ 438 cumdeltathickness->Set(0); 439 InputUpdateFromVectorx(femmodel,cumdeltathickness,SealevelriseCumDeltathicknessEnum,VertexSIdEnum); 440 441 delete deltathickness; 442 delete cumdeltathickness; 443 444 return false; 445 } 446 else{ 447 count++; 448 femmodel->parameters->SetParam(count,SealevelriseRunCountEnum); //increment counter 449 450 /*increment cumulative delta thickness load: */ 451 GetVectorFromInputsx(&cumdeltathickness,femmodel,SealevelriseCumDeltathicknessEnum,VertexSIdEnum); 452 GetVectorFromInputsx(&deltathickness,femmodel,SealevelriseDeltathicknessEnum,VertexSIdEnum); 453 454 cumdeltathickness->AXPY(deltathickness,1); 455 InputUpdateFromVectorx(femmodel,cumdeltathickness,SealevelriseCumDeltathicknessEnum,VertexSIdEnum); 456 457 delete deltathickness; 458 delete cumdeltathickness; 459 460 return true; 461 } 462 463 } /*}}}*/ -
issm/branches/trunk-larour-NatGeoScience2016/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp
r20690 r21329 17 17 iomodel->FetchDataToInput(elements,"md.geometry.bed",BedEnum); 18 18 } 19 19 20 } -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumDefinitions.h
r21326 r21329 767 767 SealevelEustaticEnum, 768 768 SealevelriseDeltathicknessEnum, 769 SealevelriseCumDeltathicknessEnum, 769 770 SealevelriseSpcthicknessEnum, 770 771 SealevelriseMaxiterEnum, … … 775 776 SealevelriseOceanAreaScalingEnum, 776 777 SealevelriseStericRateEnum, 778 SealevelriseRunFrequencyEnum, 779 SealevelriseRunCountEnum, 777 780 SealevelriseGElasticEnum, 778 781 SealevelriseUElasticEnum, -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumToStringx.cpp
r21326 r21329 748 748 case SealevelEustaticEnum : return "SealevelEustatic"; 749 749 case SealevelriseDeltathicknessEnum : return "SealevelriseDeltathickness"; 750 case SealevelriseCumDeltathicknessEnum : return "SealevelriseCumDeltathickness"; 750 751 case SealevelriseSpcthicknessEnum : return "SealevelriseSpcthickness"; 751 752 case SealevelriseMaxiterEnum : return "SealevelriseMaxiter"; … … 756 757 case SealevelriseOceanAreaScalingEnum : return "SealevelriseOceanAreaScaling"; 757 758 case SealevelriseStericRateEnum : return "SealevelriseStericRate"; 759 case SealevelriseRunFrequencyEnum : return "SealevelriseRunFrequency"; 760 case SealevelriseRunCountEnum : return "SealevelriseRunCount"; 758 761 case SealevelriseGElasticEnum : return "SealevelriseGElastic"; 759 762 case SealevelriseUElasticEnum : return "SealevelriseUElastic"; -
issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/StringToEnumx.cpp
r21326 r21329 766 766 else if (strcmp(name,"SealevelEustatic")==0) return SealevelEustaticEnum; 767 767 else if (strcmp(name,"SealevelriseDeltathickness")==0) return SealevelriseDeltathicknessEnum; 768 else if (strcmp(name,"SealevelriseCumDeltathickness")==0) return SealevelriseCumDeltathicknessEnum; 768 769 else if (strcmp(name,"SealevelriseSpcthickness")==0) return SealevelriseSpcthicknessEnum; 769 770 else if (strcmp(name,"SealevelriseMaxiter")==0) return SealevelriseMaxiterEnum; … … 774 775 else if (strcmp(name,"SealevelriseOceanAreaScaling")==0) return SealevelriseOceanAreaScalingEnum; 775 776 else if (strcmp(name,"SealevelriseStericRate")==0) return SealevelriseStericRateEnum; 777 else if (strcmp(name,"SealevelriseRunFrequency")==0) return SealevelriseRunFrequencyEnum; 778 else if (strcmp(name,"SealevelriseRunCount")==0) return SealevelriseRunCountEnum; 776 779 else if (strcmp(name,"SealevelriseGElastic")==0) return SealevelriseGElasticEnum; 777 780 else if (strcmp(name,"SealevelriseUElastic")==0) return SealevelriseUElasticEnum; … … 872 875 else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum; 873 876 else if (strcmp(name,"HydrologySommersAnalysis")==0) return HydrologySommersAnalysisEnum; 874 else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;875 else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;876 else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum; 880 if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum; 881 else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum; 882 else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum; 883 else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum; 881 884 else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum; 882 885 else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum; -
issm/branches/trunk-larour-NatGeoScience2016/src/m/classes/slr.m
r21328 r21329 22 22 ocean_area_scaling = 0; 23 23 steric_rate = 0; %rate of ocean expansion from steric effects. 24 run_frequency = 1; %how many time steps we skip before we run SLR solver during transient 24 25 degacc = 0; 25 26 requested_outputs = {}; … … 59 60 %steric: 60 61 self.steric_rate=0; 61 62 63 %how many time steps we skip before we run SLR solver during transient 64 self.run_frequency=1; 65 62 66 %output default: 63 67 self.requested_outputs={'default'}; … … 82 86 md = checkfield(md,'fieldname','slr.maxiter','size',[1 1],'>=',1); 83 87 md = checkfield(md,'fieldname','slr.steric_rate','size',[1 1]); 88 md = checkfield(md,'fieldname','slr.run_frequency','size',[1 1],'>=',1); 84 89 md = checkfield(md,'fieldname','slr.degacc','size',[1 1],'>=',1e-10); 85 90 md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1); … … 119 124 fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area [default: No correction]'); 120 125 fielddisplay(self,'steric_rate','rate of steric ocean expansion (in mm/yr)'); 126 fielddisplay(self,'run_frequency','how many time steps we skip before we run SLR solver during transient (default: 1)'); 121 127 fielddisplay(self,'rigid','rigid earth graviational potential perturbation'); 122 128 fielddisplay(self,'elastic','elastic earth graviational potential perturbation'); … … 143 149 WriteData(fid,prefix,'object',self,'fieldname','ocean_area_scaling','format','Boolean'); 144 150 WriteData(fid,prefix,'object',self,'fieldname','steric_rate','format','Double','scale',1e-3/md.constants.yts); 151 WriteData(fid,prefix,'object',self,'fieldname','run_frequency','format','Integer'); 145 152 WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double'); 146 153 WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray'); … … 173 180 writejsdouble(fid,[modelname '.slr.ocean_area_scaling'],self.ocean_area_scaling); 174 181 writejsdouble(fid,[modelname '.slr.steric_rate'],self.steric_rate); 182 writejsdouble(fid,[modelname '.slr.run_frequency'],self.run_frequency); 175 183 writejsdouble(fid,[modelname '.slr.elastic'],self.elastic); 176 184 writejsdouble(fid,[modelname '.slr.degacc'],self.degacc); -
issm/branches/trunk-larour-NatGeoScience2016/src/m/plot/plot_contour.m
r16592 r21329 247 247 else 248 248 %clabel(c,h,'color',color,'FontSize',10,'labelspacing',20000); 249 clabel(c,h,'FontSize',10,'labelspacing',20000);250 end 251 end 249 %clabel(c,h,'FontSize',10,'labelspacing',20000); 250 end 251 end
Note:
See TracChangeset
for help on using the changeset viewer.