Changeset 19172 for issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
- Timestamp:
- 03/04/15 11:09:39 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.cpp ΒΆ
r19137 r19172 713 713 this->inputs->AddInput(NewPrecipitationInput); 714 714 715 this->InputExtrude(SurfaceforcingsMonthlytemperaturesEnum,-1); 716 this->InputExtrude(SurfaceforcingsPrecipitationEnum,-1); 717 718 /*clean-up*/ 719 delete gauss; 720 } 721 /*}}}*/ 722 void Penta::Delta18opdParameterization(void){/*{{{*/ 723 /*Are we on the base? If not, return*/ 724 if(!IsOnBase()) return; 725 726 int i; 727 IssmDouble monthlytemperatures[NUMVERTICES][12],monthlyprec[NUMVERTICES][12]; 728 IssmDouble TemperaturesPresentday[NUMVERTICES][12]; 729 IssmDouble PrecipitationsPresentday[NUMVERTICES][12]; 730 IssmDouble tmp[NUMVERTICES]; 731 IssmDouble Delta18oTime; 732 IssmDouble dpermil; 733 IssmDouble time,yts; 734 this->parameters->FindParam(&time,TimeEnum); 735 this->parameters->FindParam(&yts,ConstantsYtsEnum); 736 737 /*Get some pdd parameters*/ 738 dpermil=matpar-> GetMaterialParameter(SurfaceforcingsDpermilEnum); 739 740 /*Recover present day temperature and precipitation*/ 741 Input* input=inputs->GetInput(SurfaceforcingsTemperaturesPresentdayEnum); _assert_(input); 742 Input* input2=inputs->GetInput(SurfaceforcingsPrecipitationsPresentdayEnum); _assert_(input2); 743 GaussPenta* gauss=new GaussPenta(); 744 for(int month=0;month<12;month++) { 745 for(int iv=0;iv<NUMVERTICES;iv++) { 746 gauss->GaussVertex(iv); 747 input->GetInputValue(&TemperaturesPresentday[iv][month],gauss,month/12.*yts); 748 input2->GetInputValue(&PrecipitationsPresentday[iv][month],gauss,month/12.*yts); 749 } 750 } 751 752 /*Recover interpolation parameters at time t*/ 753 this->parameters->FindParam(&Delta18oTime,SurfaceforcingsDelta18oEnum,time); 754 755 /*Compute the temperature and precipitation*/ 756 for(int iv=0;iv<NUMVERTICES;iv++){ 757 ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil, 758 &PrecipitationsPresentday[iv][0], &TemperaturesPresentday[iv][0], 759 &monthlytemperatures[iv][0], &monthlyprec[iv][0]); 760 } 761 762 /*Update inputs*/ 763 TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum); 764 TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum); 765 for (int imonth=0;imonth<12;imonth++) { 766 for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlytemperatures[i][imonth]; 767 PentaInput* newmonthinput1 = new PentaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum); 768 NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts); 769 770 for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlyprec[i][imonth]; 771 PentaInput* newmonthinput2 = new PentaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum); 772 NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts); 773 } 774 NewTemperatureInput->Configure(this->parameters); 775 NewPrecipitationInput->Configure(this->parameters); 776 777 this->inputs->AddInput(NewTemperatureInput); 778 this->inputs->AddInput(NewPrecipitationInput); 779 715 780 this->InputExtrude(SurfaceforcingsMonthlytemperaturesEnum,-1); 716 781 this->InputExtrude(SurfaceforcingsPrecipitationEnum,-1);
Note:
See TracChangeset
for help on using the changeset viewer.