[17802] | 1 | Index: ../trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
|
---|
| 2 | ===================================================================
|
---|
| 3 | --- ../trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp (revision 17077)
|
---|
| 4 | +++ ../trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp (revision 17078)
|
---|
| 5 | @@ -89,6 +89,25 @@
|
---|
| 6 | case SMBEnum:
|
---|
| 7 | iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum,0.);
|
---|
| 8 | break;
|
---|
| 9 | + case SMBpddEnum:
|
---|
| 10 | + iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
|
---|
| 11 | + iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
|
---|
| 12 | + if(isdelta18o){
|
---|
| 13 | + iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesLgmEnum);
|
---|
| 14 | + iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesPresentdayEnum);
|
---|
| 15 | + iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationsPresentdayEnum);
|
---|
| 16 | + }
|
---|
| 17 | + else{
|
---|
| 18 | + iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum);
|
---|
| 19 | + iomodel->FetchDataToInput(elements,SurfaceforcingsMonthlytemperaturesEnum);
|
---|
| 20 | + }
|
---|
| 21 | + break;
|
---|
| 22 | + case SMBgradientsEnum:
|
---|
| 23 | + iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
|
---|
| 24 | + iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
|
---|
| 25 | + iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
|
---|
| 26 | + iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
|
---|
| 27 | + break;
|
---|
| 28 | case SurfaceforcingsEnum: /*To Be REMOVED*/
|
---|
| 29 | iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
|
---|
| 30 | iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
|
---|
| 31 | Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
|
---|
| 32 | ===================================================================
|
---|
| 33 | --- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 17077)
|
---|
| 34 | +++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 17078)
|
---|
| 35 | @@ -280,7 +280,7 @@
|
---|
| 36 | SurfaceforcingsEnum,
|
---|
| 37 | SMBEnum,
|
---|
| 38 | SurfaceforcingsMassBalanceEnum,
|
---|
| 39 | -
|
---|
| 40 | + SMBpddEnum,
|
---|
| 41 | SurfaceforcingsDelta18oEnum,
|
---|
| 42 | SurfaceforcingsDelta18oSurfaceEnum,
|
---|
| 43 | SurfaceforcingsIsdelta18oEnum,
|
---|
| 44 | @@ -288,15 +288,18 @@
|
---|
| 45 | SurfaceforcingsTemperaturesPresentdayEnum,
|
---|
| 46 | SurfaceforcingsTemperaturesLgmEnum,
|
---|
| 47 | SurfaceforcingsPrecipitationEnum,
|
---|
| 48 | - SurfaceforcingsIspddEnum,
|
---|
| 49 | SurfaceforcingsDesfacEnum,
|
---|
| 50 | SurfaceforcingsS0pEnum,
|
---|
| 51 | - SurfaceforcingsIssmbgradientsEnum,
|
---|
| 52 | + SMBgradientsEnum,
|
---|
| 53 | SurfaceforcingsMonthlytemperaturesEnum,
|
---|
| 54 | SurfaceforcingsHrefEnum,
|
---|
| 55 | SurfaceforcingsSmbrefEnum,
|
---|
| 56 | SurfaceforcingsBPosEnum,
|
---|
| 57 | SurfaceforcingsBNegEnum,
|
---|
| 58 | + SMBlapserate,
|
---|
| 59 | + /*TO BE REMOVED*/
|
---|
| 60 | + SurfaceforcingsIspddEnum,
|
---|
| 61 | + SurfaceforcingsIssmbgradientsEnum,
|
---|
| 62 | /*}}}*/
|
---|
| 63 | /*Solutions and Analyses{{{ */
|
---|
| 64 | SolutionTypeEnum,
|
---|
| 65 | Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
|
---|
| 66 | ===================================================================
|
---|
| 67 | --- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 17077)
|
---|
| 68 | +++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 17078)
|
---|
| 69 | @@ -284,6 +284,7 @@
|
---|
| 70 | case SurfaceforcingsEnum : return "Surfaceforcings";
|
---|
| 71 | case SMBEnum : return "SMB";
|
---|
| 72 | case SurfaceforcingsMassBalanceEnum : return "SurfaceforcingsMassBalance";
|
---|
| 73 | + case SMBpddEnum : return "SMBpdd";
|
---|
| 74 | case SurfaceforcingsDelta18oEnum : return "SurfaceforcingsDelta18o";
|
---|
| 75 | case SurfaceforcingsDelta18oSurfaceEnum : return "SurfaceforcingsDelta18oSurface";
|
---|
| 76 | case SurfaceforcingsIsdelta18oEnum : return "SurfaceforcingsIsdelta18o";
|
---|
| 77 | @@ -291,15 +292,16 @@
|
---|
| 78 | case SurfaceforcingsTemperaturesPresentdayEnum : return "SurfaceforcingsTemperaturesPresentday";
|
---|
| 79 | case SurfaceforcingsTemperaturesLgmEnum : return "SurfaceforcingsTemperaturesLgm";
|
---|
| 80 | case SurfaceforcingsPrecipitationEnum : return "SurfaceforcingsPrecipitation";
|
---|
| 81 | - case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
|
---|
| 82 | case SurfaceforcingsDesfacEnum : return "SurfaceforcingsDesfac";
|
---|
| 83 | case SurfaceforcingsS0pEnum : return "SurfaceforcingsS0p";
|
---|
| 84 | - case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";
|
---|
| 85 | + case SMBgradientsEnum : return "SMBgradients";
|
---|
| 86 | case SurfaceforcingsMonthlytemperaturesEnum : return "SurfaceforcingsMonthlytemperatures";
|
---|
| 87 | case SurfaceforcingsHrefEnum : return "SurfaceforcingsHref";
|
---|
| 88 | case SurfaceforcingsSmbrefEnum : return "SurfaceforcingsSmbref";
|
---|
| 89 | case SurfaceforcingsBPosEnum : return "SurfaceforcingsBPos";
|
---|
| 90 | case SurfaceforcingsBNegEnum : return "SurfaceforcingsBNeg";
|
---|
| 91 | + case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
|
---|
| 92 | + case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";
|
---|
| 93 | case SolutionTypeEnum : return "SolutionType";
|
---|
| 94 | case AnalysisTypeEnum : return "AnalysisType";
|
---|
| 95 | case ConfigurationTypeEnum : return "ConfigurationType";
|
---|
| 96 | Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
|
---|
| 97 | ===================================================================
|
---|
| 98 | --- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 17077)
|
---|
| 99 | +++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 17078)
|
---|
| 100 | @@ -290,6 +290,7 @@
|
---|
| 101 | else if (strcmp(name,"Surfaceforcings")==0) return SurfaceforcingsEnum;
|
---|
| 102 | else if (strcmp(name,"SMB")==0) return SMBEnum;
|
---|
| 103 | else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
|
---|
| 104 | + else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum;
|
---|
| 105 | else if (strcmp(name,"SurfaceforcingsDelta18o")==0) return SurfaceforcingsDelta18oEnum;
|
---|
| 106 | else if (strcmp(name,"SurfaceforcingsDelta18oSurface")==0) return SurfaceforcingsDelta18oSurfaceEnum;
|
---|
| 107 | else if (strcmp(name,"SurfaceforcingsIsdelta18o")==0) return SurfaceforcingsIsdelta18oEnum;
|
---|
| 108 | @@ -297,15 +298,16 @@
|
---|
| 109 | else if (strcmp(name,"SurfaceforcingsTemperaturesPresentday")==0) return SurfaceforcingsTemperaturesPresentdayEnum;
|
---|
| 110 | else if (strcmp(name,"SurfaceforcingsTemperaturesLgm")==0) return SurfaceforcingsTemperaturesLgmEnum;
|
---|
| 111 | else if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum;
|
---|
| 112 | - else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
|
---|
| 113 | else if (strcmp(name,"SurfaceforcingsDesfac")==0) return SurfaceforcingsDesfacEnum;
|
---|
| 114 | else if (strcmp(name,"SurfaceforcingsS0p")==0) return SurfaceforcingsS0pEnum;
|
---|
| 115 | - else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
|
---|
| 116 | + else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
|
---|
| 117 | else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
|
---|
| 118 | else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
|
---|
| 119 | else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
|
---|
| 120 | else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
|
---|
| 121 | else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
|
---|
| 122 | + else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
|
---|
| 123 | + else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
|
---|
| 124 | else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
|
---|
| 125 | else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
|
---|
| 126 | else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;
|
---|
| 127 | @@ -380,14 +382,14 @@
|
---|
| 128 | else if (strcmp(name,"AdolcParam")==0) return AdolcParamEnum;
|
---|
| 129 | else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
|
---|
| 130 | else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
|
---|
| 131 | - else if (strcmp(name,"Contour")==0) return ContourEnum;
|
---|
| 132 | + else stage=4;
|
---|
| 133 | + }
|
---|
| 134 | + if(stage==4){
|
---|
| 135 | + if (strcmp(name,"Contour")==0) return ContourEnum;
|
---|
| 136 | else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
|
---|
| 137 | else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
|
---|
| 138 | else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
|
---|
| 139 | - else stage=4;
|
---|
| 140 | - }
|
---|
| 141 | - if(stage==4){
|
---|
| 142 | - if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum;
|
---|
| 143 | + else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum;
|
---|
| 144 | else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
|
---|
| 145 | else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;
|
---|
| 146 | else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum;
|
---|
| 147 | @@ -503,14 +505,14 @@
|
---|
| 148 | else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;
|
---|
| 149 | else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
|
---|
| 150 | else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
|
---|
| 151 | - else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
|
---|
| 152 | + else stage=5;
|
---|
| 153 | + }
|
---|
| 154 | + if(stage==5){
|
---|
| 155 | + if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
|
---|
| 156 | else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
|
---|
| 157 | else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
|
---|
| 158 | else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
|
---|
| 159 | - else stage=5;
|
---|
| 160 | - }
|
---|
| 161 | - if(stage==5){
|
---|
| 162 | - if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
|
---|
| 163 | + else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
|
---|
| 164 | else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
|
---|
| 165 | else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
|
---|
| 166 | else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
|
---|
| 167 | @@ -626,14 +628,14 @@
|
---|
| 168 | else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
|
---|
| 169 | else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
|
---|
| 170 | else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
|
---|
| 171 | - else if (strcmp(name,"XY")==0) return XYEnum;
|
---|
| 172 | + else stage=6;
|
---|
| 173 | + }
|
---|
| 174 | + if(stage==6){
|
---|
| 175 | + if (strcmp(name,"XY")==0) return XYEnum;
|
---|
| 176 | else if (strcmp(name,"XYZ")==0) return XYZEnum;
|
---|
| 177 | else if (strcmp(name,"Dense")==0) return DenseEnum;
|
---|
| 178 | else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
|
---|
| 179 | - else stage=6;
|
---|
| 180 | - }
|
---|
| 181 | - if(stage==6){
|
---|
| 182 | - if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
|
---|
| 183 | + else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
|
---|
| 184 | else if (strcmp(name,"Seq")==0) return SeqEnum;
|
---|
| 185 | else if (strcmp(name,"Mpi")==0) return MpiEnum;
|
---|
| 186 | else if (strcmp(name,"Mumps")==0) return MumpsEnum;
|
---|
| 187 | Index: ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
|
---|
| 188 | ===================================================================
|
---|
| 189 | --- ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp (revision 17077)
|
---|
| 190 | +++ ../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp (revision 17078)
|
---|
| 191 | @@ -90,6 +90,30 @@
|
---|
| 192 | case SMBEnum:
|
---|
| 193 | /*Nothing to add to parameters*/
|
---|
| 194 | break;
|
---|
| 195 | + case SMBpddEnum:
|
---|
| 196 | + parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsdelta18oEnum));
|
---|
| 197 | + parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsDesfacEnum));
|
---|
| 198 | + parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsS0pEnum));
|
---|
| 199 | + iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
|
---|
| 200 | + if(isdelta18o){
|
---|
| 201 | + IssmDouble *temp = NULL;
|
---|
| 202 | + IssmDouble yts;
|
---|
| 203 | + int N,M;
|
---|
| 204 | + iomodel->Constant(&yts,ConstantsYtsEnum);
|
---|
| 205 | + iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oEnum); _assert_(N==2);
|
---|
| 206 | + for(i=0;i<M;i++) temp[M+i]=yts*temp[M+i];
|
---|
| 207 | + parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oEnum,&temp[0],&temp[M],M));
|
---|
| 208 | + iomodel->DeleteData(temp,SurfaceforcingsDelta18oEnum);
|
---|
| 209 | +
|
---|
| 210 | + iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oSurfaceEnum); _assert_(N==2);
|
---|
| 211 | + for(i=0;i<M;i++) temp[M+i]=yts*temp[M+i];
|
---|
| 212 | + parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oSurfaceEnum,&temp[0],&temp[M],M));
|
---|
| 213 | + iomodel->DeleteData(temp,SurfaceforcingsDelta18oSurfaceEnum);
|
---|
| 214 | + }
|
---|
| 215 | + break;
|
---|
| 216 | + case SMBgradientsEnum:
|
---|
| 217 | + /*Nothing to add to parameters*/
|
---|
| 218 | + break;
|
---|
| 219 | case SurfaceforcingsEnum: /*To Be REMOVED*/
|
---|
| 220 | parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIspddEnum));
|
---|
| 221 | parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsdelta18oEnum));
|
---|
| 222 | Index: ../trunk-jpl/src/c/cores/transient_core.cpp
|
---|
| 223 | ===================================================================
|
---|
| 224 | --- ../trunk-jpl/src/c/cores/transient_core.cpp (revision 17077)
|
---|
| 225 | +++ ../trunk-jpl/src/c/cores/transient_core.cpp (revision 17078)
|
---|
| 226 | @@ -21,11 +21,11 @@
|
---|
| 227 | /*parameters: */
|
---|
| 228 | int i;
|
---|
| 229 | IssmDouble starttime,finaltime,dt,yts;
|
---|
| 230 | - bool isstressbalance,ismasstransport,isFS,isthermal,isgroundingline,isdelta18o,isgia,islevelset;
|
---|
| 231 | + bool isstressbalance,ismasstransport,isFS,isthermal,isgroundingline,isgia,islevelset;
|
---|
| 232 | bool save_results,dakota_analysis;
|
---|
| 233 | bool time_adapt=false;
|
---|
| 234 | int output_frequency;
|
---|
| 235 | - int meshtype,groundingline_migration;
|
---|
| 236 | + int meshtype,groundingline_migration,smb_model;
|
---|
| 237 | int numoutputs = 0;
|
---|
| 238 | Analysis *analysis = NULL;
|
---|
| 239 | char** requested_outputs = NULL;
|
---|
| 240 | @@ -53,7 +53,6 @@
|
---|
| 241 | if(isgroundingline) femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum);
|
---|
| 242 | femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum);
|
---|
| 243 | if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,TransientRequestedOutputsEnum);
|
---|
| 244 | - femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
|
---|
| 245 |
|
---|
| 246 | /*initialize: */
|
---|
| 247 | step=0;
|
---|
| 248 | @@ -169,10 +168,6 @@
|
---|
| 249 | /*unload results*/
|
---|
| 250 | if(VerboseSolution()) _printf0_(" computing requested outputs\n");
|
---|
| 251 | femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs,save_results);
|
---|
| 252 | - if(isdelta18o){
|
---|
| 253 | - int outputs[2] = {SurfaceforcingsMonthlytemperaturesEnum,SurfaceforcingsPrecipitationEnum};
|
---|
| 254 | - femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2,save_results);
|
---|
| 255 | - }
|
---|
| 256 | if(isgroundingline && (groundingline_migration==SubelementMigrationEnum || groundingline_migration==SubelementMigration2Enum)){
|
---|
| 257 | int outputs[1] = {MaskGroundediceLevelsetEnum};
|
---|
| 258 | femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1,save_results);
|
---|
| 259 | Index: ../trunk-jpl/src/c/cores/masstransport_core.cpp
|
---|
| 260 | ===================================================================
|
---|
| 261 | --- ../trunk-jpl/src/c/cores/masstransport_core.cpp (revision 17077)
|
---|
| 262 | +++ ../trunk-jpl/src/c/cores/masstransport_core.cpp (revision 17078)
|
---|
| 263 | @@ -44,6 +44,19 @@
|
---|
| 264 | case SMBEnum:
|
---|
| 265 | /*Nothing to be done*/
|
---|
| 266 | break;
|
---|
| 267 | + case SMBpddEnum:
|
---|
| 268 | + femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
|
---|
| 269 | + if(isdelta18o){
|
---|
| 270 | + if(VerboseSolution()) _printf0_(" call Delta18oParametrization module\n");
|
---|
| 271 | + Delta18oParameterizationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
|
---|
| 272 | + }
|
---|
| 273 | + if(VerboseSolution()) _printf0_(" call positive degree day module\n");
|
---|
| 274 | + PositiveDegreeDayx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
|
---|
| 275 | + break;
|
---|
| 276 | + case SMBgradientsEnum:
|
---|
| 277 | + if(VerboseSolution())_printf_(" call smb gradients module\n\n");
|
---|
| 278 | + SmbGradientsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
|
---|
| 279 | + break;
|
---|
| 280 | case SurfaceforcingsEnum: /*To Be REMOVED*/
|
---|
| 281 | femmodel->parameters->FindParam(&issmbgradients,SurfaceforcingsIssmbgradientsEnum);
|
---|
| 282 | femmodel->parameters->FindParam(&ispdd,SurfaceforcingsIspddEnum);
|
---|
| 283 | Index: ../trunk-jpl/src/c/classes/Materials/Matpar.cpp
|
---|
| 284 | ===================================================================
|
---|
| 285 | --- ../trunk-jpl/src/c/classes/Materials/Matpar.cpp (revision 17077)
|
---|
| 286 | +++ ../trunk-jpl/src/c/classes/Materials/Matpar.cpp (revision 17078)
|
---|
| 287 | @@ -46,6 +46,13 @@
|
---|
| 288 | case SMBEnum:
|
---|
| 289 | /*Nothing to add*/
|
---|
| 290 | break;
|
---|
| 291 | + case SMBpddEnum:
|
---|
| 292 | + iomodel->Constant(&this->desfac,SurfaceforcingsDesfacEnum);
|
---|
| 293 | + iomodel->Constant(&this->s0p,SurfaceforcingsS0pEnum);
|
---|
| 294 | + break;
|
---|
| 295 | + case SMBgradientsEnum:
|
---|
| 296 | + /*Nothing to add*/
|
---|
| 297 | + break;
|
---|
| 298 | case SurfaceforcingsEnum: /*To Be REMOVED*/
|
---|
| 299 | iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
|
---|
| 300 | if(ispdd){
|
---|
| 301 | Index: ../trunk-jpl/src/m/classes/SMBpdd.py
|
---|
| 302 | ===================================================================
|
---|
| 303 | --- ../trunk-jpl/src/m/classes/SMBpdd.py (revision 0)
|
---|
| 304 | +++ ../trunk-jpl/src/m/classes/SMBpdd.py (revision 17078)
|
---|
| 305 | @@ -0,0 +1,97 @@
|
---|
| 306 | +from fielddisplay import fielddisplay
|
---|
| 307 | +from EnumDefinitions import *
|
---|
| 308 | +from checkfield import *
|
---|
| 309 | +from WriteData import *
|
---|
| 310 | +
|
---|
| 311 | +class SMBpdd(object):
|
---|
| 312 | + """
|
---|
| 313 | + SMBpdd Class definition
|
---|
| 314 | +
|
---|
| 315 | + Usage:
|
---|
| 316 | + SMBpdd=SMBpdd();
|
---|
| 317 | + """
|
---|
| 318 | +
|
---|
| 319 | + def __init__(self): # {{{
|
---|
| 320 | + self.precipitation = float('NaN')
|
---|
| 321 | + self.monthlytemperatures = float('NaN')
|
---|
| 322 | + self.desfac = 0.
|
---|
| 323 | + self.s0p = 0.
|
---|
| 324 | + self.isdelta18o = 0
|
---|
| 325 | + self.delta18o = float('NaN')
|
---|
| 326 | + self.delta18o_surface = float('NaN')
|
---|
| 327 | + self.temperatures_presentday = float('NaN')
|
---|
| 328 | + self.temperatures_lgm = float('NaN')
|
---|
| 329 | + self.precipitations_presentday = float('NaN')
|
---|
| 330 | +
|
---|
| 331 | + #set defaults
|
---|
| 332 | + self.setdefaultparameters()
|
---|
| 333 | + #}}}
|
---|
| 334 | + def __repr__(self): # {{{
|
---|
| 335 | + string=" surface forcings parameters:"
|
---|
| 336 | +
|
---|
| 337 | + string="%s\n%s"%(string,fielddisplay(self,'precipitation','surface precipitation [m/yr water eq]'))
|
---|
| 338 | + string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
|
---|
| 339 | + string="%s\n%s"%(string,fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)'))
|
---|
| 340 | + string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
|
---|
| 341 | + string="%s\n%s"%(string,fielddisplay(self,'monthlytemperatures','monthly surface temperatures [K], required if pdd is activated and delta18o not activated'))
|
---|
| 342 | + string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if pdd is activated and delta18o activated'))
|
---|
| 343 | + string="%s\n%s"%(string,fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if pdd is activated and delta18o activated'))
|
---|
| 344 | + string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o activated'))
|
---|
| 345 | + string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o, required if pdd is activated and delta18o activated'))
|
---|
| 346 | + string="%s\n%s"%(string,fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated'))
|
---|
| 347 | +
|
---|
| 348 | + return string
|
---|
| 349 | + #}}}
|
---|
| 350 | + def initialize(self,md): # {{{
|
---|
| 351 | +
|
---|
| 352 | + if numpy.all(numpy.isnan(self.precipitation)):
|
---|
| 353 | + self.precipitation=numpy.zeros((md.mesh.numberofvertices,1))
|
---|
| 354 | + print " no SMBpdd.precipitation specified: values set as zero"
|
---|
| 355 | +
|
---|
| 356 | + return self
|
---|
| 357 | + #}}}
|
---|
| 358 | + def setdefaultparameters(self): # {{{
|
---|
| 359 | +
|
---|
| 360 | + #pdd method not used in default mode
|
---|
| 361 | + self.isdelta18o = 0
|
---|
| 362 | + self.desfac = 0.5
|
---|
| 363 | + self.s0p = 0.
|
---|
| 364 | +
|
---|
| 365 | + return self
|
---|
| 366 | + #}}}
|
---|
| 367 | + def checkconsistency(self,md,solution,analyses): # {{{
|
---|
| 368 | +
|
---|
| 369 | + if MasstransportAnalysisEnum() in analyses:
|
---|
| 370 | + md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',[1]);
|
---|
| 371 | + md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'numel',[1]);
|
---|
| 372 | + if not self.isdelta18o:
|
---|
| 373 | + md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','forcing',1,'NaN',1)
|
---|
| 374 | + md = checkfield(md,'fieldname','surfaceforcings.precipitation','forcing',1,'NaN',1)
|
---|
| 375 | + else:
|
---|
| 376 | + md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1)
|
---|
| 377 | + md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1)
|
---|
| 378 | + md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1)
|
---|
| 379 | + md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1)
|
---|
| 380 | + md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1)
|
---|
| 381 | +
|
---|
| 382 | + return md
|
---|
| 383 | + # }}}
|
---|
| 384 | + def marshall(self,md,fid): # {{{
|
---|
| 385 | +
|
---|
| 386 | + yts=365.0*24.0*3600.0
|
---|
| 387 | +
|
---|
| 388 | + WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBpddEnum(),'format','Integer');
|
---|
| 389 | +
|
---|
| 390 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
|
---|
| 391 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isdelta18o','format','Boolean')
|
---|
| 392 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double');
|
---|
| 393 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','Double');
|
---|
| 394 | + if self.isdelta18o:
|
---|
| 395 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1)
|
---|
| 396 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1)
|
---|
| 397 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1)
|
---|
| 398 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o_surface','format','DoubleMat','mattype',1)
|
---|
| 399 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1)
|
---|
| 400 | + else:
|
---|
| 401 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1)
|
---|
| 402 | + # }}}
|
---|
| 403 | Index: ../trunk-jpl/src/m/classes/SMBpdd.m
|
---|
| 404 | ===================================================================
|
---|
| 405 | --- ../trunk-jpl/src/m/classes/SMBpdd.m (revision 0)
|
---|
| 406 | +++ ../trunk-jpl/src/m/classes/SMBpdd.m (revision 17078)
|
---|
| 407 | @@ -0,0 +1,96 @@
|
---|
| 408 | +%SMBpdd Class definition
|
---|
| 409 | +%
|
---|
| 410 | +% Usage:
|
---|
| 411 | +% SMBpdd=SMBpdd();
|
---|
| 412 | +
|
---|
| 413 | +classdef SMBpdd
|
---|
| 414 | + properties (SetAccess=public)
|
---|
| 415 | + precipitation = NaN;
|
---|
| 416 | + monthlytemperatures = NaN;
|
---|
| 417 | + desfac = 0.5;
|
---|
| 418 | + s0p = 0;
|
---|
| 419 | + isdelta18o = 0;
|
---|
| 420 | + delta18o = NaN;
|
---|
| 421 | + delta18o_surface = NaN;
|
---|
| 422 | + temperatures_presentday = NaN;
|
---|
| 423 | + temperatures_lgm = NaN;
|
---|
| 424 | + precipitations_presentday = NaN;
|
---|
| 425 | + end
|
---|
| 426 | + methods
|
---|
| 427 | + function obj = SMBpdd(varargin) % {{{
|
---|
| 428 | + switch nargin
|
---|
| 429 | + case 0
|
---|
| 430 | + obj=setdefaultparameters(obj);
|
---|
| 431 | + otherwise
|
---|
| 432 | + error('constructor not supported');
|
---|
| 433 | + end
|
---|
| 434 | + end % }}}
|
---|
| 435 | + function self = initialize(self,md) % {{{
|
---|
| 436 | +
|
---|
| 437 | + if isnan(self.precipitation),
|
---|
| 438 | + self.precipitation=zeros(md.mesh.numberofvertices,1);
|
---|
| 439 | + disp(' no SMBpdd.precipitation specified: values set as zero');
|
---|
| 440 | + end
|
---|
| 441 | +
|
---|
| 442 | + end % }}}
|
---|
| 443 | + function obj = setdefaultparameters(obj) % {{{
|
---|
| 444 | +
|
---|
| 445 | + obj.isdelta18o = 0;
|
---|
| 446 | + obj.desfac = 0.5;
|
---|
| 447 | + obj.s0p = 0;
|
---|
| 448 | + end % }}}
|
---|
| 449 | + function md = checkconsistency(obj,md,solution,analyses) % {{{
|
---|
| 450 | +
|
---|
| 451 | + if ismember(MasstransportAnalysisEnum(),analyses),
|
---|
| 452 | + md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',1);
|
---|
| 453 | + md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'numel',1);
|
---|
| 454 | + if(obj.isdelta18o==0)
|
---|
| 455 | + md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','forcing',1,'NaN',1);
|
---|
| 456 | + md = checkfield(md,'fieldname','surfaceforcings.precipitation','forcing',1,'NaN',1);
|
---|
| 457 | + else
|
---|
| 458 | + md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1);
|
---|
| 459 | + md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1);
|
---|
| 460 | + md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1);
|
---|
| 461 | + md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1);
|
---|
| 462 | + md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1);
|
---|
| 463 | + end
|
---|
| 464 | + end
|
---|
| 465 | + end % }}}
|
---|
| 466 | + function disp(obj) % {{{
|
---|
| 467 | + disp(sprintf(' surface forcings parameters:'));
|
---|
| 468 | +
|
---|
| 469 | + disp(sprintf('\n PDD and deltaO18 parameters:'));
|
---|
| 470 | + fielddisplay(obj,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)');
|
---|
| 471 | + fielddisplay(obj,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]');
|
---|
| 472 | + fielddisplay(obj,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
|
---|
| 473 | + fielddisplay(obj,'monthlytemperatures','monthly surface temperatures [K], required if pdd is activated and delta18o not activated');
|
---|
| 474 | + fielddisplay(obj,'precipitation','surface precipitation [m/yr water eq]');
|
---|
| 475 | + fielddisplay(obj,'temperatures_presentday','monthly present day surface temperatures [K], required if pdd is activated and delta18o activated');
|
---|
| 476 | + fielddisplay(obj,'temperatures_lgm','monthly LGM surface temperatures [K], required if pdd is activated and delta18o activated');
|
---|
| 477 | + fielddisplay(obj,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o activated');
|
---|
| 478 | + fielddisplay(obj,'delta18o','delta18o, required if pdd is activated and delta18o activated');
|
---|
| 479 | + fielddisplay(obj,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated');
|
---|
| 480 | +
|
---|
| 481 | + end % }}}
|
---|
| 482 | + function marshall(obj,md,fid) % {{{
|
---|
| 483 | +
|
---|
| 484 | + yts=365.0*24.0*3600.0;
|
---|
| 485 | +
|
---|
| 486 | + WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBpddEnum(),'format','Integer');
|
---|
| 487 | +
|
---|
| 488 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
|
---|
| 489 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','desfac','format','Double');
|
---|
| 490 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','s0p','format','Double');
|
---|
| 491 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','isdelta18o','format','Boolean');
|
---|
| 492 | + if obj.isdelta18o
|
---|
| 493 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1);
|
---|
| 494 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1);
|
---|
| 495 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1);
|
---|
| 496 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','delta18o_surface','format','DoubleMat','mattype',1);
|
---|
| 497 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1);
|
---|
| 498 | + else
|
---|
| 499 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
|
---|
| 500 | + end
|
---|
| 501 | + end % }}}
|
---|
| 502 | + end
|
---|
| 503 | +end
|
---|
| 504 | Index: ../trunk-jpl/src/m/classes/SMBgradients.m
|
---|
| 505 | ===================================================================
|
---|
| 506 | --- ../trunk-jpl/src/m/classes/SMBgradients.m (revision 0)
|
---|
| 507 | +++ ../trunk-jpl/src/m/classes/SMBgradients.m (revision 17078)
|
---|
| 508 | @@ -0,0 +1,63 @@
|
---|
| 509 | +%SMBgradients Class definition
|
---|
| 510 | +%
|
---|
| 511 | +% Usage:
|
---|
| 512 | +% SMBgradients=SMBgradients();
|
---|
| 513 | +
|
---|
| 514 | +classdef SMBgradients
|
---|
| 515 | + properties (SetAccess=public)
|
---|
| 516 | + href = NaN;
|
---|
| 517 | + smbref = NaN;
|
---|
| 518 | + b_pos = NaN;
|
---|
| 519 | + b_neg = NaN;
|
---|
| 520 | + end
|
---|
| 521 | + methods
|
---|
| 522 | + function obj = SMBgradients(varargin) % {{{
|
---|
| 523 | + switch nargin
|
---|
| 524 | + case 0
|
---|
| 525 | + obj=setdefaultparameters(obj);
|
---|
| 526 | + otherwise
|
---|
| 527 | + error('constructor not supported');
|
---|
| 528 | + end
|
---|
| 529 | + end % }}}
|
---|
| 530 | + function self = initialize(self,md) % {{{
|
---|
| 531 | +
|
---|
| 532 | + %Nothing done for now
|
---|
| 533 | +
|
---|
| 534 | + end % }}}
|
---|
| 535 | + function obj = setdefaultparameters(obj) % {{{
|
---|
| 536 | +
|
---|
| 537 | + %Nothing for now
|
---|
| 538 | +
|
---|
| 539 | + end % }}}
|
---|
| 540 | + function md = checkconsistency(obj,md,solution,analyses) % {{{
|
---|
| 541 | +
|
---|
| 542 | + if ismember(MasstransportAnalysisEnum(),analyses),
|
---|
| 543 | + md = checkfield(md,'fieldname','surfaceforcings.href','forcing',1,'NaN',1);
|
---|
| 544 | + md = checkfield(md,'fieldname','surfaceforcings.smbref','forcing',1,'NaN',1);
|
---|
| 545 | + md = checkfield(md,'fieldname','surfaceforcings.b_pos','forcing',1,'NaN',1);
|
---|
| 546 | + md = checkfield(md,'fieldname','surfaceforcings.b_neg','forcing',1,'NaN',1);
|
---|
| 547 | + end
|
---|
| 548 | + end % }}}
|
---|
| 549 | + function disp(obj) % {{{
|
---|
| 550 | + disp(sprintf(' surface forcings parameters:'));
|
---|
| 551 | +
|
---|
| 552 | + disp(sprintf('\n SMB gradients parameters:'));
|
---|
| 553 | + fielddisplay(obj,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method');
|
---|
| 554 | + fielddisplay(obj,'smbref',' reference smb from which deviation is calculated in smb gradients method');
|
---|
| 555 | + fielddisplay(obj,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated');
|
---|
| 556 | + fielddisplay(obj,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated');
|
---|
| 557 | +
|
---|
| 558 | + end % }}}
|
---|
| 559 | + function marshall(obj,md,fid) % {{{
|
---|
| 560 | +
|
---|
| 561 | + yts=365.0*24.0*3600.0;
|
---|
| 562 | +
|
---|
| 563 | + WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBgradientsEnum(),'format','Integer');
|
---|
| 564 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','href','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
|
---|
| 565 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
|
---|
| 566 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
|
---|
| 567 | + WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
|
---|
| 568 | +
|
---|
| 569 | + end % }}}
|
---|
| 570 | + end
|
---|
| 571 | +end
|
---|
| 572 | Index: ../trunk-jpl/src/m/classes/model.py
|
---|
| 573 | ===================================================================
|
---|
| 574 | --- ../trunk-jpl/src/m/classes/model.py (revision 17077)
|
---|
| 575 | +++ ../trunk-jpl/src/m/classes/model.py (revision 17078)
|
---|
| 576 | @@ -8,6 +8,8 @@
|
---|
| 577 | from constants import constants
|
---|
| 578 | from surfaceforcings import surfaceforcings
|
---|
| 579 | from SMB import SMB
|
---|
| 580 | +from SMBpdd import SMBpdd
|
---|
| 581 | +from SMBgradients import SMBgradients
|
---|
| 582 | from basalforcings import basalforcings
|
---|
| 583 | from matice import matice
|
---|
| 584 | from damage import damage
|
---|
| 585 | Index: ../trunk-jpl/src/m/classes/SMBgradients.py
|
---|
| 586 | ===================================================================
|
---|
| 587 | --- ../trunk-jpl/src/m/classes/SMBgradients.py (revision 0)
|
---|
| 588 | +++ ../trunk-jpl/src/m/classes/SMBgradients.py (revision 17078)
|
---|
| 589 | @@ -0,0 +1,56 @@
|
---|
| 590 | +from fielddisplay import fielddisplay
|
---|
| 591 | +from EnumDefinitions import *
|
---|
| 592 | +from checkfield import *
|
---|
| 593 | +from WriteData import *
|
---|
| 594 | +
|
---|
| 595 | +class SMBgradients(object):
|
---|
| 596 | + """
|
---|
| 597 | + SMBgradients Class definition
|
---|
| 598 | +
|
---|
| 599 | + Usage:
|
---|
| 600 | + SMBgradients=SMBgradients();
|
---|
| 601 | + """
|
---|
| 602 | +
|
---|
| 603 | + def __init__(self): # {{{
|
---|
| 604 | + self.href = float('NaN')
|
---|
| 605 | + self.smbref = float('NaN')
|
---|
| 606 | + self.b_pos = float('NaN')
|
---|
| 607 | + self.b_neg = float('NaN')
|
---|
| 608 | + #}}}
|
---|
| 609 | + def __repr__(self): # {{{
|
---|
| 610 | + string=" surface forcings parameters:"
|
---|
| 611 | +
|
---|
| 612 | + string="%s\n%s"%(string,fielddisplay(self,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)'))
|
---|
| 613 | + string="%s\n%s"%(string,fielddisplay(self,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method'))
|
---|
| 614 | + string="%s\n%s"%(string,fielddisplay(self,'smbref',' reference smb from which deviation is calculated in smb gradients method'))
|
---|
| 615 | + string="%s\n%s"%(string,fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'))
|
---|
| 616 | + string="%s\n%s"%(string,fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'))
|
---|
| 617 | +
|
---|
| 618 | + return string
|
---|
| 619 | + #}}}
|
---|
| 620 | + def initialize(self,md): # {{{
|
---|
| 621 | +
|
---|
| 622 | + #Nothing for now
|
---|
| 623 | +
|
---|
| 624 | + return self
|
---|
| 625 | + #}}}
|
---|
| 626 | + def checkconsistency(self,md,solution,analyses): # {{{
|
---|
| 627 | +
|
---|
| 628 | + if MasstransportAnalysisEnum() in analyses:
|
---|
| 629 | + md = checkfield(md,'fieldname','surfaceforcings.href','forcing',1,'NaN',1)
|
---|
| 630 | + md = checkfield(md,'fieldname','surfaceforcings.smbref','forcing',1,'NaN',1)
|
---|
| 631 | + md = checkfield(md,'fieldname','surfaceforcings.b_pos','forcing',1,'NaN',1)
|
---|
| 632 | + md = checkfield(md,'fieldname','surfaceforcings.b_neg','forcing',1,'NaN',1)
|
---|
| 633 | +
|
---|
| 634 | + return md
|
---|
| 635 | + # }}}
|
---|
| 636 | + def marshall(self,md,fid): # {{{
|
---|
| 637 | +
|
---|
| 638 | + yts=365.0*24.0*3600.0
|
---|
| 639 | +
|
---|
| 640 | + WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBgradientsEnum(),'format','Integer');
|
---|
| 641 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','href','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1)
|
---|
| 642 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
|
---|
| 643 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
|
---|
| 644 | + WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
|
---|
| 645 | + # }}}
|
---|
| 646 | Index: ../trunk-jpl/src/m/enum/SMBpddEnum.m
|
---|
| 647 | ===================================================================
|
---|
| 648 | --- ../trunk-jpl/src/m/enum/SMBpddEnum.m (revision 0)
|
---|
| 649 | +++ ../trunk-jpl/src/m/enum/SMBpddEnum.m (revision 17078)
|
---|
| 650 | @@ -0,0 +1,11 @@
|
---|
| 651 | +function macro=SMBpddEnum()
|
---|
| 652 | +%SMBPDDENUM - Enum of SMBpdd
|
---|
| 653 | +%
|
---|
| 654 | +% WARNING: DO NOT MODIFY THIS FILE
|
---|
| 655 | +% this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
|
---|
| 656 | +% Please read src/c/shared/Enum/README for more information
|
---|
| 657 | +%
|
---|
| 658 | +% Usage:
|
---|
| 659 | +% macro=SMBpddEnum()
|
---|
| 660 | +
|
---|
| 661 | +macro=StringToEnum('SMBpdd');
|
---|
| 662 | Index: ../trunk-jpl/src/m/enum/SMBgradientsEnum.m
|
---|
| 663 | ===================================================================
|
---|
| 664 | --- ../trunk-jpl/src/m/enum/SMBgradientsEnum.m (revision 0)
|
---|
| 665 | +++ ../trunk-jpl/src/m/enum/SMBgradientsEnum.m (revision 17078)
|
---|
| 666 | @@ -0,0 +1,11 @@
|
---|
| 667 | +function macro=SMBgradientsEnum()
|
---|
| 668 | +%SMBGRADIENTSENUM - Enum of SMBgradients
|
---|
| 669 | +%
|
---|
| 670 | +% WARNING: DO NOT MODIFY THIS FILE
|
---|
| 671 | +% this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
|
---|
| 672 | +% Please read src/c/shared/Enum/README for more information
|
---|
| 673 | +%
|
---|
| 674 | +% Usage:
|
---|
| 675 | +% macro=SMBgradientsEnum()
|
---|
| 676 | +
|
---|
| 677 | +macro=StringToEnum('SMBgradients');
|
---|
| 678 | Index: ../trunk-jpl/src/m/enum/LevelsetAnalysisEnum.m
|
---|
| 679 | ===================================================================
|
---|
| 680 | --- ../trunk-jpl/src/m/enum/LevelsetAnalysisEnum.m (revision 0)
|
---|
| 681 | +++ ../trunk-jpl/src/m/enum/LevelsetAnalysisEnum.m (revision 17078)
|
---|
| 682 | @@ -0,0 +1,11 @@
|
---|
| 683 | +function macro=LevelsetAnalysisEnum()
|
---|
| 684 | +%LEVELSETANALYSISENUM - Enum of LevelsetAnalysis
|
---|
| 685 | +%
|
---|
| 686 | +% WARNING: DO NOT MODIFY THIS FILE
|
---|
| 687 | +% this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
|
---|
| 688 | +% Please read src/c/shared/Enum/README for more information
|
---|
| 689 | +%
|
---|
| 690 | +% Usage:
|
---|
| 691 | +% macro=LevelsetAnalysisEnum()
|
---|
| 692 | +
|
---|
| 693 | +macro=StringToEnum('LevelsetAnalysis');
|
---|
| 694 | Index: ../trunk-jpl/src/m/enum/EnumDefinitions.py
|
---|
| 695 | ===================================================================
|
---|
| 696 | --- ../trunk-jpl/src/m/enum/EnumDefinitions.py (revision 17077)
|
---|
| 697 | +++ ../trunk-jpl/src/m/enum/EnumDefinitions.py (revision 17078)
|
---|
| 698 | @@ -276,6 +276,7 @@
|
---|
| 699 | def SurfaceforcingsEnum(): return StringToEnum("Surfaceforcings")[0]
|
---|
| 700 | def SMBEnum(): return StringToEnum("SMB")[0]
|
---|
| 701 | def SurfaceforcingsMassBalanceEnum(): return StringToEnum("SurfaceforcingsMassBalance")[0]
|
---|
| 702 | +def SMBpddEnum(): return StringToEnum("SMBpdd")[0]
|
---|
| 703 | def SurfaceforcingsDelta18oEnum(): return StringToEnum("SurfaceforcingsDelta18o")[0]
|
---|
| 704 | def SurfaceforcingsDelta18oSurfaceEnum(): return StringToEnum("SurfaceforcingsDelta18oSurface")[0]
|
---|
| 705 | def SurfaceforcingsIsdelta18oEnum(): return StringToEnum("SurfaceforcingsIsdelta18o")[0]
|
---|
| 706 | @@ -283,15 +284,16 @@
|
---|
| 707 | def SurfaceforcingsTemperaturesPresentdayEnum(): return StringToEnum("SurfaceforcingsTemperaturesPresentday")[0]
|
---|
| 708 | def SurfaceforcingsTemperaturesLgmEnum(): return StringToEnum("SurfaceforcingsTemperaturesLgm")[0]
|
---|
| 709 | def SurfaceforcingsPrecipitationEnum(): return StringToEnum("SurfaceforcingsPrecipitation")[0]
|
---|
| 710 | -def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0]
|
---|
| 711 | def SurfaceforcingsDesfacEnum(): return StringToEnum("SurfaceforcingsDesfac")[0]
|
---|
| 712 | def SurfaceforcingsS0pEnum(): return StringToEnum("SurfaceforcingsS0p")[0]
|
---|
| 713 | -def SurfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0]
|
---|
| 714 | +def SMBgradientsEnum(): return StringToEnum("SMBgradients")[0]
|
---|
| 715 | def SurfaceforcingsMonthlytemperaturesEnum(): return StringToEnum("SurfaceforcingsMonthlytemperatures")[0]
|
---|
| 716 | def SurfaceforcingsHrefEnum(): return StringToEnum("SurfaceforcingsHref")[0]
|
---|
| 717 | def SurfaceforcingsSmbrefEnum(): return StringToEnum("SurfaceforcingsSmbref")[0]
|
---|
| 718 | def SurfaceforcingsBPosEnum(): return StringToEnum("SurfaceforcingsBPos")[0]
|
---|
| 719 | def SurfaceforcingsBNegEnum(): return StringToEnum("SurfaceforcingsBNeg")[0]
|
---|
| 720 | +def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0]
|
---|
| 721 | +def SurfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0]
|
---|
| 722 | def SolutionTypeEnum(): return StringToEnum("SolutionType")[0]
|
---|
| 723 | def AnalysisTypeEnum(): return StringToEnum("AnalysisType")[0]
|
---|
| 724 | def ConfigurationTypeEnum(): return StringToEnum("ConfigurationType")[0]
|
---|
| 725 | Index: ../trunk-jpl/src/m/enum/TransientIslevelsetEnum.m
|
---|
| 726 | ===================================================================
|
---|
| 727 | --- ../trunk-jpl/src/m/enum/TransientIslevelsetEnum.m (revision 0)
|
---|
| 728 | +++ ../trunk-jpl/src/m/enum/TransientIslevelsetEnum.m (revision 17078)
|
---|
| 729 | @@ -0,0 +1,11 @@
|
---|
| 730 | +function macro=TransientIslevelsetEnum()
|
---|
| 731 | +%TRANSIENTISLEVELSETENUM - Enum of TransientIslevelset
|
---|
| 732 | +%
|
---|
| 733 | +% WARNING: DO NOT MODIFY THIS FILE
|
---|
| 734 | +% this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
|
---|
| 735 | +% Please read src/c/shared/Enum/README for more information
|
---|
| 736 | +%
|
---|
| 737 | +% Usage:
|
---|
| 738 | +% macro=TransientIslevelsetEnum()
|
---|
| 739 | +
|
---|
| 740 | +macro=StringToEnum('TransientIslevelset');
|
---|