Changeset 24335 for issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
- Timestamp:
- 11/15/19 16:28:40 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
r24253 r24335 21 21 return 1; 22 22 }/*}}}*/ 23 void SmbAnalysis::UpdateElements(Elements* elements,I oModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/23 void SmbAnalysis::UpdateElements(Elements* elements,Inputs2* inputs2,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/ 24 24 25 25 int smb_model; … … 31 31 if(iomodel->my_elements[i]){ 32 32 Element* element=(Element*)elements->GetObjectByOffset(counter); 33 element->Update(i ,iomodel,analysis_counter,analysis_type,P1Enum);33 element->Update(inputs2,i,iomodel,analysis_counter,analysis_type,P1Enum); 34 34 counter++; 35 35 } … … 40 40 switch(smb_model){ 41 41 case SMBforcingEnum: 42 iomodel->FetchDataToInput( elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.);42 iomodel->FetchDataToInput(inputs2,elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.); 43 43 break; 44 44 case SMBgembEnum: 45 iomodel->FetchDataToInput( elements,"md.smb.Ta",SmbTaEnum);46 iomodel->FetchDataToInput( elements,"md.smb.V",SmbVEnum);47 iomodel->FetchDataToInput( elements,"md.smb.dswrf",SmbDswrfEnum);48 iomodel->FetchDataToInput( elements,"md.smb.dlwrf",SmbDlwrfEnum);49 iomodel->FetchDataToInput( elements,"md.smb.P",SmbPEnum);50 iomodel->FetchDataToInput( elements,"md.smb.eAir",SmbEAirEnum);51 iomodel->FetchDataToInput( elements,"md.smb.pAir",SmbPAirEnum);52 iomodel->FetchDataToInput( elements,"md.smb.zTop",SmbZTopEnum);53 iomodel->FetchDataToInput( elements,"md.smb.dzTop",SmbDzTopEnum);54 iomodel->FetchDataToInput( elements,"md.smb.dzMin",SmbDzMinEnum);55 iomodel->FetchDataToInput( elements,"md.smb.zY",SmbZYEnum);56 iomodel->FetchDataToInput( elements,"md.smb.zMax",SmbZMaxEnum);57 iomodel->FetchDataToInput( elements,"md.smb.zMin",SmbZMinEnum);58 iomodel->FetchDataToInput( elements,"md.smb.Tmean",SmbTmeanEnum);59 iomodel->FetchDataToInput( elements,"md.smb.Vmean",SmbVmeanEnum);60 iomodel->FetchDataToInput( elements,"md.smb.C",SmbCEnum);61 iomodel->FetchDataToInput( elements,"md.smb.Tz",SmbTzEnum);62 iomodel->FetchDataToInput( elements,"md.smb.Vz",SmbVzEnum);63 InputUpdateFromConstantx( elements,0.,SmbIsInitializedEnum);64 iomodel->FetchDataToInput( elements,"md.smb.Dzini",SmbDziniEnum);65 iomodel->FetchDataToInput( elements,"md.smb.Dini",SmbDiniEnum);66 iomodel->FetchDataToInput( elements,"md.smb.Reini",SmbReiniEnum);67 iomodel->FetchDataToInput( elements,"md.smb.Gdnini",SmbGdniniEnum);68 iomodel->FetchDataToInput( elements,"md.smb.Gspini",SmbGspiniEnum);69 iomodel->FetchDataToInput( elements,"md.smb.ECini",SmbECiniEnum);70 iomodel->FetchDataToInput( elements,"md.smb.Wini",SmbWiniEnum);71 iomodel->FetchDataToInput( elements,"md.smb.Aini",SmbAiniEnum);72 iomodel->FetchDataToInput( elements,"md.smb.Tini",SmbTiniEnum);73 iomodel->FetchDataToInput( elements,"md.smb.Sizeini",SmbSizeiniEnum);74 iomodel->FetchDataToInput( elements,"md.smb.aValue",SmbAValueEnum);75 iomodel->FetchDataToInput( elements,"md.smb.teValue",SmbTeValueEnum);45 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Ta",SmbTaEnum); 46 iomodel->FetchDataToInput(inputs2,elements,"md.smb.V",SmbVEnum); 47 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dswrf",SmbDswrfEnum); 48 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dlwrf",SmbDlwrfEnum); 49 iomodel->FetchDataToInput(inputs2,elements,"md.smb.P",SmbPEnum); 50 iomodel->FetchDataToInput(inputs2,elements,"md.smb.eAir",SmbEAirEnum); 51 iomodel->FetchDataToInput(inputs2,elements,"md.smb.pAir",SmbPAirEnum); 52 iomodel->FetchDataToInput(inputs2,elements,"md.smb.zTop",SmbZTopEnum); 53 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dzTop",SmbDzTopEnum); 54 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dzMin",SmbDzMinEnum); 55 iomodel->FetchDataToInput(inputs2,elements,"md.smb.zY",SmbZYEnum); 56 iomodel->FetchDataToInput(inputs2,elements,"md.smb.zMax",SmbZMaxEnum); 57 iomodel->FetchDataToInput(inputs2,elements,"md.smb.zMin",SmbZMinEnum); 58 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Tmean",SmbTmeanEnum); 59 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Vmean",SmbVmeanEnum); 60 iomodel->FetchDataToInput(inputs2,elements,"md.smb.C",SmbCEnum); 61 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Tz",SmbTzEnum); 62 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Vz",SmbVzEnum); 63 InputUpdateFromConstantx(inputs2,elements,0.,SmbIsInitializedEnum); 64 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Dzini",SmbDziniEnum); 65 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Dini",SmbDiniEnum); 66 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Reini",SmbReiniEnum); 67 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Gdnini",SmbGdniniEnum); 68 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Gspini",SmbGspiniEnum); 69 iomodel->FetchDataToInput(inputs2,elements,"md.smb.ECini",SmbECiniEnum); 70 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Wini",SmbWiniEnum); 71 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Aini",SmbAiniEnum); 72 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Tini",SmbTiniEnum); 73 iomodel->FetchDataToInput(inputs2,elements,"md.smb.Sizeini",SmbSizeiniEnum); 74 iomodel->FetchDataToInput(inputs2,elements,"md.smb.aValue",SmbAValueEnum); 75 iomodel->FetchDataToInput(inputs2,elements,"md.smb.teValue",SmbTeValueEnum); 76 76 break; 77 77 case SMBpddEnum: 78 78 iomodel->FindConstant(&isdelta18o,"md.smb.isdelta18o"); 79 79 iomodel->FindConstant(&ismungsm,"md.smb.ismungsm"); 80 iomodel->FetchDataToInput( elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);81 iomodel->FetchDataToInput( elements,"md.smb.s0p",SmbS0pEnum);82 iomodel->FetchDataToInput( elements,"md.smb.s0t",SmbS0tEnum);80 iomodel->FetchDataToInput(inputs2,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum); 81 iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0p",SmbS0pEnum); 82 iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0t",SmbS0tEnum); 83 83 if(isdelta18o || ismungsm){ 84 iomodel->FetchDataToInput( elements,"md.smb.temperatures_lgm",SmbTemperaturesLgmEnum);85 iomodel->FetchDataToInput( elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum);86 iomodel->FetchDataToInput( elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum);87 iomodel->FetchDataToInput( elements,"md.smb.precipitations_lgm",SmbPrecipitationsLgmEnum);84 iomodel->FetchDataToInput(inputs2,elements,"md.smb.temperatures_lgm",SmbTemperaturesLgmEnum); 85 iomodel->FetchDataToInput(inputs2,elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum); 86 iomodel->FetchDataToInput(inputs2,elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum); 87 iomodel->FetchDataToInput(inputs2,elements,"md.smb.precipitations_lgm",SmbPrecipitationsLgmEnum); 88 88 }else{ 89 iomodel->FetchDataToInput( elements,"md.smb.precipitation",SmbPrecipitationEnum);90 iomodel->FetchDataToInput( elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum);89 iomodel->FetchDataToInput(inputs2,elements,"md.smb.precipitation",SmbPrecipitationEnum); 90 iomodel->FetchDataToInput(inputs2,elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum); 91 91 } 92 92 break; 93 93 case SMBpddSicopolisEnum: 94 iomodel->FetchDataToInput( elements,"md.smb.s0p",SmbS0pEnum);95 iomodel->FetchDataToInput( elements,"md.smb.s0t",SmbS0tEnum);94 iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0p",SmbS0pEnum); 95 iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0t",SmbS0tEnum); 96 96 iomodel->FindConstant(&isfirnwarming,"md.smb.isfirnwarming"); 97 iomodel->FetchDataToInput( elements,"md.smb.smb_corr",SmbSmbCorrEnum);98 iomodel->FetchDataToInput( elements,"md.smb.precipitation",SmbPrecipitationEnum);99 iomodel->FetchDataToInput( elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum);100 iomodel->FetchDataToInput( elements,"md.smb.precipitation_anomaly",SmbPrecipitationsAnomalyEnum);101 iomodel->FetchDataToInput( elements,"md.smb.temperature_anomaly",SmbTemperaturesAnomalyEnum);97 iomodel->FetchDataToInput(inputs2,elements,"md.smb.smb_corr",SmbSmbCorrEnum); 98 iomodel->FetchDataToInput(inputs2,elements,"md.smb.precipitation",SmbPrecipitationEnum); 99 iomodel->FetchDataToInput(inputs2,elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum); 100 iomodel->FetchDataToInput(inputs2,elements,"md.smb.precipitation_anomaly",SmbPrecipitationsAnomalyEnum); 101 iomodel->FetchDataToInput(inputs2,elements,"md.smb.temperature_anomaly",SmbTemperaturesAnomalyEnum); 102 102 break; 103 103 case SMBd18opddEnum: … … 107 107 iomodel->FindConstant(&isd18opd,"md.smb.isd18opd"); 108 108 iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac"); 109 iomodel->FetchDataToInput( elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);110 iomodel->FetchDataToInput( elements,"md.smb.s0p",SmbS0pEnum);111 iomodel->FetchDataToInput( elements,"md.smb.s0t",SmbS0tEnum);109 iomodel->FetchDataToInput(inputs2,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum); 110 iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0p",SmbS0pEnum); 111 iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0t",SmbS0tEnum); 112 112 if(isd18opd){ 113 iomodel->FetchDataToInput( elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum);114 iomodel->FetchDataToInput( elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum);113 iomodel->FetchDataToInput(inputs2,elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum); 114 iomodel->FetchDataToInput(inputs2,elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum); 115 115 if(!istemperaturescaled){ 116 iomodel->FetchDataToInput( elements,"md.smb.temperatures_reconstructed",SmbTemperaturesReconstructedEnum);116 iomodel->FetchDataToInput(inputs2,elements,"md.smb.temperatures_reconstructed",SmbTemperaturesReconstructedEnum); 117 117 } 118 118 if(!isprecipscaled){ 119 iomodel->FetchDataToInput( elements,"md.smb.precipitations_reconstructed",SmbPrecipitationsReconstructedEnum);119 iomodel->FetchDataToInput(inputs2,elements,"md.smb.precipitations_reconstructed",SmbPrecipitationsReconstructedEnum); 120 120 } 121 121 } 122 122 if(issetpddfac){ 123 iomodel->FetchDataToInput( elements,"md.smb.pddfac_snow",SmbPddfacSnowEnum,-1.);124 iomodel->FetchDataToInput( elements,"md.smb.pddfac_ice",SmbPddfacIceEnum,-1.);123 iomodel->FetchDataToInput(inputs2,elements,"md.smb.pddfac_snow",SmbPddfacSnowEnum,-1.); 124 iomodel->FetchDataToInput(inputs2,elements,"md.smb.pddfac_ice",SmbPddfacIceEnum,-1.); 125 125 } 126 126 break; 127 127 case SMBgradientsEnum: 128 iomodel->FetchDataToInput( elements,"md.smb.href",SmbHrefEnum);129 iomodel->FetchDataToInput( elements,"md.smb.smbref",SmbSmbrefEnum);130 iomodel->FetchDataToInput( elements,"md.smb.b_pos",SmbBPosEnum);131 iomodel->FetchDataToInput( elements,"md.smb.b_neg",SmbBNegEnum);128 iomodel->FetchDataToInput(inputs2,elements,"md.smb.href",SmbHrefEnum); 129 iomodel->FetchDataToInput(inputs2,elements,"md.smb.smbref",SmbSmbrefEnum); 130 iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_pos",SmbBPosEnum); 131 iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_neg",SmbBNegEnum); 132 132 break; 133 133 case SMBgradientselaEnum: 134 iomodel->FetchDataToInput( elements,"md.smb.ela",SmbElaEnum);135 iomodel->FetchDataToInput( elements,"md.smb.b_pos",SmbBPosEnum);136 iomodel->FetchDataToInput( elements,"md.smb.b_neg",SmbBNegEnum);137 iomodel->FetchDataToInput( elements,"md.smb.b_max",SmbBMaxEnum);138 iomodel->FetchDataToInput( elements,"md.smb.b_min",SmbBMinEnum);134 iomodel->FetchDataToInput(inputs2,elements,"md.smb.ela",SmbElaEnum); 135 iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_pos",SmbBPosEnum); 136 iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_neg",SmbBNegEnum); 137 iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_max",SmbBMaxEnum); 138 iomodel->FetchDataToInput(inputs2,elements,"md.smb.b_min",SmbBMinEnum); 139 139 break; 140 140 case SMBhenningEnum: 141 iomodel->FetchDataToInput( elements,"md.smb.smbref",SmbSmbrefEnum,0.);141 iomodel->FetchDataToInput(inputs2,elements,"md.smb.smbref",SmbSmbrefEnum,0.); 142 142 break; 143 143 case SMBcomponentsEnum: 144 iomodel->FetchDataToInput( elements,"md.smb.accumulation",SmbAccumulationEnum,0.);145 iomodel->FetchDataToInput( elements,"md.smb.evaporation",SmbEvaporationEnum,0.);146 iomodel->FetchDataToInput( elements,"md.smb.runoff",SmbRunoffEnum,0.);144 iomodel->FetchDataToInput(inputs2,elements,"md.smb.accumulation",SmbAccumulationEnum,0.); 145 iomodel->FetchDataToInput(inputs2,elements,"md.smb.evaporation",SmbEvaporationEnum,0.); 146 iomodel->FetchDataToInput(inputs2,elements,"md.smb.runoff",SmbRunoffEnum,0.); 147 147 break; 148 148 case SMBmeltcomponentsEnum: 149 iomodel->FetchDataToInput( elements,"md.smb.accumulation",SmbAccumulationEnum,0.);150 iomodel->FetchDataToInput( elements,"md.smb.evaporation",SmbEvaporationEnum,0.);151 iomodel->FetchDataToInput( elements,"md.smb.melt",SmbMeltEnum,0.);152 iomodel->FetchDataToInput( elements,"md.smb.refreeze",SmbRefreezeEnum,0.);149 iomodel->FetchDataToInput(inputs2,elements,"md.smb.accumulation",SmbAccumulationEnum,0.); 150 iomodel->FetchDataToInput(inputs2,elements,"md.smb.evaporation",SmbEvaporationEnum,0.); 151 iomodel->FetchDataToInput(inputs2,elements,"md.smb.melt",SmbMeltEnum,0.); 152 iomodel->FetchDataToInput(inputs2,elements,"md.smb.refreeze",SmbRefreezeEnum,0.); 153 153 break; 154 154 case SMBgradientscomponentsEnum: 155 iomodel->FetchDataToInput( elements,"md.smb.accualti",SmbAccualtiEnum);156 iomodel->FetchDataToInput( elements,"md.smb.accugrad",SmbAccugradEnum);157 iomodel->FetchDataToInput( elements,"md.smb.runoffalti",SmbRunoffaltiEnum);158 iomodel->FetchDataToInput( elements,"md.smb.runoffgrad",SmbRunoffgradEnum);155 iomodel->FetchDataToInput(inputs2,elements,"md.smb.accualti",SmbAccualtiEnum); 156 iomodel->FetchDataToInput(inputs2,elements,"md.smb.accugrad",SmbAccugradEnum); 157 iomodel->FetchDataToInput(inputs2,elements,"md.smb.runoffalti",SmbRunoffaltiEnum); 158 iomodel->FetchDataToInput(inputs2,elements,"md.smb.runoffgrad",SmbRunoffgradEnum); 159 159 break; 160 160 case SMBsemicEnum: 161 iomodel->FetchDataToInput( elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);162 iomodel->FetchDataToInput( elements,"md.smb.s0gcm",SmbS0gcmEnum);163 iomodel->FetchDataToInput( elements,"md.smb.dailysnowfall",SmbDailysnowfallEnum);164 iomodel->FetchDataToInput( elements,"md.smb.dailyrainfall",SmbDailyrainfallEnum);165 iomodel->FetchDataToInput( elements,"md.smb.dailydsradiation",SmbDailydsradiationEnum);166 iomodel->FetchDataToInput( elements,"md.smb.dailydlradiation",SmbDailydlradiationEnum);167 iomodel->FetchDataToInput( elements,"md.smb.dailywindspeed",SmbDailywindspeedEnum);168 iomodel->FetchDataToInput( elements,"md.smb.dailypressure",SmbDailypressureEnum);169 iomodel->FetchDataToInput( elements,"md.smb.dailyairdensity",SmbDailyairdensityEnum);170 iomodel->FetchDataToInput( elements,"md.smb.dailyairhumidity",SmbDailyairhumidityEnum);171 iomodel->FetchDataToInput( elements,"md.smb.dailytemperature",SmbDailytemperatureEnum);161 iomodel->FetchDataToInput(inputs2,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum); 162 iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0gcm",SmbS0gcmEnum); 163 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailysnowfall",SmbDailysnowfallEnum); 164 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailyrainfall",SmbDailyrainfallEnum); 165 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailydsradiation",SmbDailydsradiationEnum); 166 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailydlradiation",SmbDailydlradiationEnum); 167 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailywindspeed",SmbDailywindspeedEnum); 168 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailypressure",SmbDailypressureEnum); 169 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailyairdensity",SmbDailyairdensityEnum); 170 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailyairhumidity",SmbDailyairhumidityEnum); 171 iomodel->FetchDataToInput(inputs2,elements,"md.smb.dailytemperature",SmbDailytemperatureEnum); 172 172 break; 173 173 default:
Note:
See TracChangeset
for help on using the changeset viewer.