Ignore:
Timestamp:
11/15/19 16:28:40 (5 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added Inputs2, TODO: still AMR, GEMB and DC do not work, and need to delete current Inputs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp

    r24253 r24335  
    2121        return 1;
    2222}/*}}}*/
    23 void SmbAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
     23void SmbAnalysis::UpdateElements(Elements* elements,Inputs2* inputs2,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
    2424
    2525        int    smb_model;
     
    3131                if(iomodel->my_elements[i]){
    3232                        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);
    3434                        counter++;
    3535                }
     
    4040        switch(smb_model){
    4141                case SMBforcingEnum:
    42                         iomodel->FetchDataToInput(elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.);
     42                        iomodel->FetchDataToInput(inputs2,elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.);
    4343                        break;
    4444                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);
    7676                        break;
    7777                case SMBpddEnum:
    7878                        iomodel->FindConstant(&isdelta18o,"md.smb.isdelta18o");
    7979                        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);
    8383                        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);
    8888                        }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);
    9191                        }
    9292                        break;
    9393                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);
    9696                        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);
    102102                        break;
    103103                case SMBd18opddEnum:
     
    107107                        iomodel->FindConstant(&isd18opd,"md.smb.isd18opd");
    108108                        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);
    112112                        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);
    115115                                if(!istemperaturescaled){
    116                                         iomodel->FetchDataToInput(elements,"md.smb.temperatures_reconstructed",SmbTemperaturesReconstructedEnum);
     116                                        iomodel->FetchDataToInput(inputs2,elements,"md.smb.temperatures_reconstructed",SmbTemperaturesReconstructedEnum);
    117117                                }
    118118                                if(!isprecipscaled){
    119                                         iomodel->FetchDataToInput(elements,"md.smb.precipitations_reconstructed",SmbPrecipitationsReconstructedEnum);
     119                                        iomodel->FetchDataToInput(inputs2,elements,"md.smb.precipitations_reconstructed",SmbPrecipitationsReconstructedEnum);
    120120                                }
    121121                        }
    122122                        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.);
    125125                        }
    126126                        break;
    127127                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);
    132132                        break;
    133133                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);
    139139                        break;
    140140                case SMBhenningEnum:
    141                         iomodel->FetchDataToInput(elements,"md.smb.smbref",SmbSmbrefEnum,0.);
     141                        iomodel->FetchDataToInput(inputs2,elements,"md.smb.smbref",SmbSmbrefEnum,0.);
    142142                        break;
    143143                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.);
    147147                        break;
    148148                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.);
    153153                        break;
    154154                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);
    159159                        break;
    160160                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);
    172172                        break;
    173173                default:
Note: See TracChangeset for help on using the changeset viewer.