source:
issm/oecreview/Archive/25834-26739/ISSM-26614-26615.diff
Last change on this file was 26740, checked in by , 3 years ago | |
---|---|
File size: 65.3 KB |
-
../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
82 82 iomodel->FetchDataToInput(inputs,elements,"md.initialization.vy",VyEnum); 83 83 84 84 /*Get moving front parameters*/ 85 int calvinglaw; 86 iomodel->FindConstant(&calvinglaw,"md.calving.law"); 87 switch(calvinglaw){ 88 case DefaultCalvingEnum: 89 iomodel->FetchDataToInput(inputs,elements,"md.calving.calvingrate",CalvingCalvingrateEnum); 90 break; 85 bool isstochastic; 86 int calvinglaw; 87 iomodel->FindConstant(&calvinglaw,"md.calving.law"); 88 iomodel->FindConstant(&isstochastic,"md.stochasticforcing.isstochasticforcing"); 89 switch(calvinglaw){ 90 case DefaultCalvingEnum: 91 iomodel->FetchDataToInput(inputs,elements,"md.calving.calvingrate",CalvingCalvingrateEnum); 92 if(isstochastic){ 93 iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum); 94 iomodel->FetchDataToInput(inputs,elements,"md.calving.calvingrate",BaselineCalvingCalvingrateEnum); 95 } 96 break; 91 97 case CalvingLevermannEnum: 92 98 iomodel->FetchDataToInput(inputs,elements,"md.calving.coeff",CalvinglevermannCoeffEnum); 93 99 break; -
../trunk-jpl/src/c/classes/Elements/Element.cpp
98 98 xDelete<IssmDouble>(varspin); 99 99 xDelete<IssmDouble>(phi_basin); 100 100 }/*}}}*/ 101 void Element::Autoregression(bool isstepforar,int arorder,IssmDouble telapsed_ar,IssmDouble* beta0,IssmDouble* beta1,IssmDouble* phi, IssmDouble* noiseterms,int enum_type){/*{{{*/102 103 104 int basinid,M,N ;105 IssmDouble beta0_basin,beta1_basin,noise _basin;101 void Element::Autoregression(bool isstepforar,int arorder,IssmDouble telapsed_ar,IssmDouble* beta0,IssmDouble* beta1,IssmDouble* phi,bool isfieldstochastic,int enum_type){/*{{{*/ 102 103 const int numvertices = this->GetNumberOfVertices(); 104 int basinid,M,N,arenum_type,basinenum_type,noiseenum_type,outenum_type; 105 IssmDouble beta0_basin,beta1_basin,noiseterm; 106 106 IssmDouble* phi_basin = xNew<IssmDouble>(arorder); 107 107 IssmDouble* varlist = xNew<IssmDouble>(numvertices); 108 108 IssmDouble* valuesautoregression = NULL; 109 Input* noiseterm_input = NULL; 109 110 110 /*Get Basin ID and Basin coefficients*/ 111 if(enum_type==SMBautoregressionEnum) this->GetInputValue(&basinid,SmbBasinsIdEnum); 112 if(enum_type==FrontalForcingsRignotAutoregressionEnum) this->GetInputValue(&basinid,FrontalForcingsBasinIdEnum); 111 /*Get field-specific enums*/ 112 switch(enum_type){ 113 case(SMBautoregressionEnum): 114 arenum_type = SmbValuesAutoregressionEnum; 115 basinenum_type = SmbBasinsIdEnum; 116 noiseenum_type = SmbAutoregressionNoiseEnum; 117 outenum_type = SmbMassBalanceEnum; 118 break; 119 case(FrontalForcingsRignotAutoregressionEnum): 120 arenum_type = ThermalforcingValuesAutoregressionEnum; 121 basinenum_type = FrontalForcingsBasinIdEnum; 122 noiseenum_type = ThermalforcingAutoregressionNoiseEnum; 123 outenum_type = FrontalForcingsThermalForcingEnum; 124 break; 125 } 126 127 /*Get noise and autoregressive terms*/ 128 this->GetInputValue(&basinid,basinenum_type); 129 if(isfieldstochastic){ 130 noiseterm_input = this->GetInput(noiseenum_type); 131 Gauss* gauss = this->NewGauss(); 132 noiseterm_input->GetInputValue(&noiseterm,gauss); 133 delete gauss; 134 } 135 else noiseterm = 0.0; 136 this->inputs->GetArray(arenum_type,this->lid,&valuesautoregression,&M); 137 138 /*Get basin coefficients*/ 113 139 for(int ii=0;ii<arorder;ii++) phi_basin[ii] = phi[basinid*arorder+ii]; 114 140 beta0_basin = beta0[basinid]; 115 141 beta1_basin = beta1[basinid]; 116 noise_basin = noiseterms[basinid];117 if(enum_type==SMBautoregressionEnum) this->inputs->GetArray(SmbValuesAutoregressionEnum,this->lid,&valuesautoregression,&M);118 if(enum_type==FrontalForcingsRignotAutoregressionEnum) this->inputs->GetArray(ThermalforcingValuesAutoregressionEnum,this->lid,&valuesautoregression,&M);119 142 120 143 /*If not AR model timestep: take the old values of variable*/ 121 144 if(isstepforar==false){ 122 145 for(int i=0;i<numvertices;i++) varlist[i]=valuesautoregression[i]; 123 146 } … … 130 153 for(int ii=0;ii<arorder;ii++) autoregressionterm += phi_basin[ii]*valuesautoregression[v+ii*numvertices]; 131 154 132 155 /*Stochastic variable value*/ 133 varlist[v] = beta0_basin+beta1_basin*telapsed_ar+autoregressionterm+noise _basin;156 varlist[v] = beta0_basin+beta1_basin*telapsed_ar+autoregressionterm+noiseterm; 134 157 } 135 /*Update autoregression TFvalues*/158 /*Update autoregression values*/ 136 159 IssmDouble* temparray = xNew<IssmDouble>(numvertices*arorder); 137 160 /*Assign newest values and shift older values*/ 138 161 for(int i=0;i<numvertices;i++) temparray[i] = varlist[i]; 139 162 for(int i=0;i<(arorder-1)*numvertices;i++) temparray[i+numvertices] = valuesautoregression[i]; 140 if(enum_type==SMBautoregressionEnum) this->inputs->SetArrayInput(SmbValuesAutoregressionEnum,this->lid,temparray,numvertices*arorder); 141 if(enum_type==FrontalForcingsRignotAutoregressionEnum) this->inputs->SetArrayInput(ThermalforcingValuesAutoregressionEnum,this->lid,temparray,numvertices*arorder); 163 this->inputs->SetArrayInput(arenum_type,this->lid,temparray,numvertices*arorder); 142 164 xDelete<IssmDouble>(temparray); 143 165 } 144 166 145 167 /*Add input to element*/ 146 if(enum_type==SMBautoregressionEnum) this->AddInput(SmbMassBalanceEnum,varlist,P1Enum); 147 if(enum_type==FrontalForcingsRignotAutoregressionEnum) this->AddInput(FrontalForcingsThermalForcingEnum,varlist,P1Enum); 168 this->AddInput(outenum_type,varlist,P1Enum); 148 169 149 170 /*Cleanup*/ 150 171 xDelete<IssmDouble>(phi_basin); -
../trunk-jpl/src/c/classes/Elements/Element.h
68 68 /*bool AnyActive(void);*/ 69 69 bool AnyFSet(void); 70 70 void AutoregressionInit(int numbasins,int arorder,int nspin,IssmDouble starttime,IssmDouble tstep_ar,IssmDouble tinit_ar,IssmDouble* beta0,IssmDouble* beta1,IssmDouble* phi,int enum_type); 71 void Autoregression(bool isstepforar,int arorder,IssmDouble telapsed_ar,IssmDouble* beta0,IssmDouble* beta1,IssmDouble* phi, IssmDouble* noiseterms,int enum_type);71 void Autoregression(bool isstepforar,int arorder,IssmDouble telapsed_ar,IssmDouble* beta0,IssmDouble* beta1,IssmDouble* phi,bool isfieldstochastic,int enum_type); 72 72 void ComputeLambdaS(void); 73 73 void ComputeNewDamage(); 74 74 void ComputeStrainRate(); -
../trunk-jpl/src/c/modules/FrontalForcingsx/FrontalForcingsx.cpp
79 79 80 80 /*Load parameters*/ 81 81 bool isstochastic; 82 int M,N,Nphi,arorder,numbasins,my_rank; 82 bool istfstochastic = false; 83 int M,N,Nphi,arorder,numbasins,my_rank; 83 84 femmodel->parameters->FindParam(&numbasins,FrontalForcingsNumberofBasinsEnum); 84 85 femmodel->parameters->FindParam(&arorder,FrontalForcingsAutoregressiveOrderEnum); 85 86 IssmDouble tinit_ar; … … 86 87 IssmDouble* beta0 = NULL; 87 88 IssmDouble* beta1 = NULL; 88 89 IssmDouble* phi = NULL; 89 IssmDouble* noiseterms = xNewZeroInit<IssmDouble>(numbasins);90 90 91 91 femmodel->parameters->FindParam(&tinit_ar,FrontalForcingsAutoregressionInitialTimeEnum); 92 92 femmodel->parameters->FindParam(&beta0,&M,FrontalForcingsBeta0Enum); _assert_(M==numbasins); … … 93 93 femmodel->parameters->FindParam(&beta1,&M,FrontalForcingsBeta1Enum); _assert_(M==numbasins); 94 94 femmodel->parameters->FindParam(&phi,&M,&Nphi,FrontalForcingsPhiEnum); _assert_(M==numbasins); _assert_(Nphi==arorder); 95 95 96 /*Retrieve noise terms if stochasticity, otherwise leave noiseterms as 0*/97 96 femmodel->parameters->FindParam(&isstochastic,StochasticForcingIsStochasticForcingEnum); 98 97 if(isstochastic){ 99 98 int numstochasticfields; … … 101 100 femmodel->parameters->FindParam(&numstochasticfields,StochasticForcingNumFieldsEnum); 102 101 femmodel->parameters->FindParam(&stochasticfields,&N,StochasticForcingFieldsEnum); _assert_(N==numstochasticfields); 103 102 for(int i=0;i<numstochasticfields;i++){ 104 if(stochasticfields[i]==FrontalForcingsRignotAutoregressionEnum){ 105 femmodel->parameters->FindParam(&noiseterms,&M,ThermalforcingAutoregressionNoiseEnum); _assert_(M==numbasins); 106 } 103 if(stochasticfields[i]==FrontalForcingsRignotAutoregressionEnum) istfstochastic = true; 107 104 } 105 xDelete<int>(stochasticfields); 108 106 } 109 107 /*Time elapsed with respect to AR model initial time*/ 110 108 IssmDouble telapsed_ar = time-tinit_ar; … … 112 110 /*Loop over each element to compute Thermal Forcing at vertices*/ 113 111 for(Object* &object:femmodel->elements->objects){ 114 112 Element* element = xDynamicCast<Element*>(object); 115 element->Autoregression(isstepforar,arorder,telapsed_ar,beta0,beta1,phi, noiseterms,FrontalForcingsRignotAutoregressionEnum);113 element->Autoregression(isstepforar,arorder,telapsed_ar,beta0,beta1,phi,istfstochastic,FrontalForcingsRignotAutoregressionEnum); 116 114 } 117 115 118 116 /*Cleanup*/ … … 119 117 xDelete<IssmDouble>(beta0); 120 118 xDelete<IssmDouble>(beta1); 121 119 xDelete<IssmDouble>(phi); 122 xDelete<IssmDouble>(noiseterms);123 120 }/*}}}*/ -
../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
499 499 } 500 500 501 501 bool isstochasticforcing; 502 503 504 int num_fields;505 506 507 iomodel->FindConstant(&fields,&num_fields,"md.stochasticforcing.fields");508 if(num_fields<1) _error_("no stochasticforcing fields found");509 int* stochasticforcing_enums = xNew<int>(num_fields);510 for(int i=0;i<num_fields;i++){ 511 stochasticforcing_enums[i] = StringToEnumx(fields[i]); 512 xDelete<char>(fields[i]);513 } 514 xDelete<char*>(fields); 515 parameters->AddObject(new IntVecParam(StochasticForcingFieldsEnum,stochasticforcing_enums,num_fields));516 xDelete<int>(stochasticforcing_enums);517 502 parameters->FindParam(&isstochasticforcing,StochasticForcingIsStochasticForcingEnum); 503 if(isstochasticforcing){ 504 int num_fields,stochastic_dim; 505 char** fields; 506 parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.num_fields",StochasticForcingNumFieldsEnum)); 507 parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.defaultdimension",StochasticForcingDefaultDimensionEnum)); 508 iomodel->FindConstant(&fields,&num_fields,"md.stochasticforcing.fields"); 509 if(num_fields<1) _error_("no stochasticforcing fields found"); 510 int* stochasticforcing_enums = xNew<int>(num_fields); 511 for(int i=0;i<num_fields;i++){ 512 stochasticforcing_enums[i] = StringToEnumx(fields[i]); 513 xDelete<char>(fields[i]); 514 } 515 xDelete<char*>(fields); 516 parameters->AddObject(new IntVecParam(StochasticForcingFieldsEnum,stochasticforcing_enums,num_fields)); 517 xDelete<int>(stochasticforcing_enums); 518 518 parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.randomflag",StochasticForcingRandomflagEnum)); 519 520 521 522 523 524 525 519 iomodel->FetchData(&transparam,&M,&N,"md.stochasticforcing.dimensions"); 520 parameters->AddObject(new IntVecParam(StochasticForcingDimensionsEnum,transparam,N)); 521 xDelete<IssmDouble>(transparam); 522 iomodel->FetchData(&transparam,&M,&N,"md.stochasticforcing.covariance"); 523 parameters->AddObject(new DoubleMatParam(StochasticForcingCovarianceEnum,transparam,M,N)); 524 xDelete<IssmDouble>(transparam); 525 } 526 526 527 527 /*Deal with mass flux segments: {{{*/ 528 528 iomodel->FetchData(&qmu_mass_flux_present,"md.qmu.mass_flux_segments_present"); -
../trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp
35 35 /*Determine whether random seed is fixed to time step (randomflag==false) or random seed truly random (randomflag==true)*/ 36 36 if(randomflag) fixedseed=-1; 37 37 else fixedseed = reCast<int,IssmDouble>((time-starttime)/dt); 38 38 /*multivariateNormal needs to be passed a NULL pointer to avoid memory leak issues*/ 39 39 IssmDouble* temparray = NULL; 40 40 multivariateNormal(&temparray,dimtot,0.0,covariance,fixedseed); 41 41 for(int i=0;i<dimtot;i++) noiseterms[i]=temparray[i]; … … 45 45 46 46 int i=0; 47 47 for(int j=0;j<numfields;j++){ 48 int enum_type;48 int dimenum_type,noiseenum_type; 49 49 IssmDouble* noisefield = xNew<IssmDouble>(dimensions[j]); 50 50 for(int k=0;k<dimensions[j];k++){ 51 51 noisefield[k]=noiseterms[i+k]; 52 52 } 53 54 if(fields[j]==SMBautoregressionEnum) enum_type = SmbAutoregressionNoiseEnum; 55 else if(fields[j]==FrontalForcingsRignotAutoregressionEnum) enum_type = ThermalforcingAutoregressionNoiseEnum; 56 else _error_("Field "<<EnumToStringx(fields[j])<<" does not support stochasticity yet.\n"); 57 femmodel->parameters->SetParam(noisefield,dimensions[j],enum_type); 58 i=i+dimensions[j]; 53 54 int dimensionid; 55 56 /*Deal with the autoregressive models*/ 57 if(fields[j]==SMBautoregressionEnum || fields[j]==FrontalForcingsRignotAutoregressionEnum){ 58 switch(fields[j]){ 59 case SMBautoregressionEnum: 60 dimenum_type = SmbBasinsIdEnum; 61 noiseenum_type = SmbAutoregressionNoiseEnum; 62 break; 63 case FrontalForcingsRignotAutoregressionEnum: 64 dimenum_type = FrontalForcingsBasinIdEnum; 65 noiseenum_type = ThermalforcingAutoregressionNoiseEnum; 66 break; 67 } 68 for(Object* &object:femmodel->elements->objects){ 69 Element* element = xDynamicCast<Element*>(object); 70 int numvertices = element->GetNumberOfVertices(); 71 IssmDouble* noise_element = xNew<IssmDouble>(numvertices); 72 element->GetInputValue(&dimensionid,dimenum_type); 73 for(int i=0;i<numvertices;i++) noise_element[i] = noisefield[dimensionid]; 74 element->AddInput(noiseenum_type,noise_element,P0Enum); 75 xDelete<IssmDouble>(noise_element); 76 } 77 } 78 else{ 79 switch(fields[j]){ 80 case SMBautoregressionEnum: 81 case FrontalForcingsRignotAutoregressionEnum: 82 /*Already done above*/ 83 break; 84 case DefaultCalvingEnum: 85 /*Delete CalvingCalvingrateEnum at previous time step (required if it is transient)*/ 86 femmodel->inputs->DeleteInput(CalvingCalvingrateEnum); 87 for(Object* &object:femmodel->elements->objects){ 88 Element* element = xDynamicCast<Element*>(object); 89 int numvertices = element->GetNumberOfVertices(); 90 IssmDouble baselinecalvingrate; 91 IssmDouble calvingrate_tot[numvertices]; 92 Input* baselinecalvingrate_input = NULL; 93 baselinecalvingrate_input = element->GetInput(BaselineCalvingCalvingrateEnum); _assert_(baselinecalvingrate_input); 94 element->GetInputValue(&dimensionid,StochasticForcingDefaultIdEnum); 95 Gauss* gauss = element->NewGauss(); 96 for(int i=0;i<numvertices;i++){ 97 gauss->GaussVertex(i); 98 baselinecalvingrate_input->GetInputValue(&baselinecalvingrate,gauss); 99 calvingrate_tot[i] = max(0.0,baselinecalvingrate+noisefield[dimensionid]); 100 } 101 element->AddInput(CalvingCalvingrateEnum,&calvingrate_tot[0],P1DGEnum); 102 delete gauss; 103 } 104 break; 105 default: 106 _error_("Field "<<EnumToStringx(fields[j])<<" does not support stochasticity yet."); 107 } 108 } 109 i=i+dimensions[j]; 59 110 xDelete<IssmDouble>(noisefield); 60 111 } 61 112 -
../trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
176 176 }/*}}}*/ 177 177 void Smbautoregressionx(FemModel* femmodel){/*{{{*/ 178 178 179 180 181 182 183 179 /*Get time parameters*/ 180 IssmDouble time,dt,starttime,tstep_ar; 181 femmodel->parameters->FindParam(&time,TimeEnum); 182 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 183 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum); 184 184 femmodel->parameters->FindParam(&tstep_ar,SmbAutoregressionTimestepEnum); 185 185 186 187 188 189 186 /*Initialize module at first time step*/ 187 if(time<=starttime+dt){SmbautoregressionInitx(femmodel);} 188 /*Determine if this is a time step for the AR model*/ 189 bool isstepforar = false; 190 190 191 191 #ifndef _HAVE_AD_ 192 192 if((fmod(time,tstep_ar)<fmod((time-dt),tstep_ar)) || (time<=starttime+dt) || tstep_ar==dt) isstepforar = true; 193 194 195 193 #else 194 _error_("not implemented yet"); 195 #endif 196 196 197 /*Load parameters*/ 198 bool isstochastic; 199 int M,N,Nphi,arorder,numbasins,my_rank; 200 femmodel->parameters->FindParam(&numbasins,SmbNumBasinsEnum); 201 femmodel->parameters->FindParam(&arorder,SmbAutoregressiveOrderEnum); 202 IssmDouble tinit_ar; 203 IssmDouble* beta0 = NULL; 204 IssmDouble* beta1 = NULL; 205 IssmDouble* phi = NULL; 197 /*Load parameters*/ 198 bool isstochastic; 199 bool issmbstochastic = false; 200 int M,N,Nphi,arorder,numbasins,my_rank; 201 femmodel->parameters->FindParam(&numbasins,SmbNumBasinsEnum); 202 femmodel->parameters->FindParam(&arorder,SmbAutoregressiveOrderEnum); 203 IssmDouble tinit_ar; 204 IssmDouble* beta0 = NULL; 205 IssmDouble* beta1 = NULL; 206 IssmDouble* phi = NULL; 206 207 207 208 209 210 208 femmodel->parameters->FindParam(&tinit_ar,SmbAutoregressionInitialTimeEnum); 209 femmodel->parameters->FindParam(&beta0,&M,SmbBeta0Enum); _assert_(M==numbasins); 210 femmodel->parameters->FindParam(&beta1,&M,SmbBeta1Enum); _assert_(M==numbasins); 211 femmodel->parameters->FindParam(&phi,&M,&Nphi,SmbPhiEnum); _assert_(M==numbasins); _assert_(Nphi==arorder); 211 212 212 /*Retrieve noise terms if stochasticity, otherwise leave noiseterms as 0*/ 213 IssmDouble* noiseterms = xNewZeroInit<IssmDouble>(numbasins); 214 femmodel->parameters->FindParam(&isstochastic,StochasticForcingIsStochasticForcingEnum); 213 femmodel->parameters->FindParam(&isstochastic,StochasticForcingIsStochasticForcingEnum); 215 214 if(isstochastic){ 216 215 int numstochasticfields; 217 216 int* stochasticfields; 218 217 femmodel->parameters->FindParam(&numstochasticfields,StochasticForcingNumFieldsEnum); 219 218 femmodel->parameters->FindParam(&stochasticfields,&N,StochasticForcingFieldsEnum); _assert_(N==numstochasticfields); 220 219 for(int i=0;i<numstochasticfields;i++){ 221 if(stochasticfields[i]==SMBautoregressionEnum){ 222 femmodel->parameters->FindParam(&noiseterms,&M,SmbAutoregressionNoiseEnum); _assert_(M==numbasins); 223 } 224 } 225 xDelete<int>(stochasticfields); 226 } 227 /*Time elapsed with respect to AR model initial time*/ 228 IssmDouble telapsed_ar = time-tinit_ar; 220 if(stochasticfields[i]==SMBautoregressionEnum) issmbstochastic = true; 221 } 222 xDelete<int>(stochasticfields); 223 } 224 /*Time elapsed with respect to AR model initial time*/ 225 IssmDouble telapsed_ar = time-tinit_ar; 229 226 230 231 232 233 element->Autoregression(isstepforar,arorder,telapsed_ar,beta0,beta1,phi,noiseterms,SMBautoregressionEnum);234 227 /*Loop over each element to compute SMB at vertices*/ 228 for(Object* &object:femmodel->elements->objects){ 229 Element* element = xDynamicCast<Element*>(object); 230 element->Autoregression(isstepforar,arorder,telapsed_ar,beta0,beta1,phi,issmbstochastic,SMBautoregressionEnum); 231 } 235 232 236 /*Cleanup*/ 237 xDelete<IssmDouble>(beta0); 238 xDelete<IssmDouble>(beta1); 239 xDelete<IssmDouble>(phi); 240 xDelete<IssmDouble>(noiseterms); 233 /*Cleanup*/ 234 xDelete<IssmDouble>(beta0); 235 xDelete<IssmDouble>(beta1); 236 xDelete<IssmDouble>(phi); 241 237 }/*}}}*/ 242 238 void Delta18oParameterizationx(FemModel* femmodel){/*{{{*/ 243 239 -
../trunk-jpl/src/c/shared/Enum/Enum.vim
397 397 syn keyword cConstant SolidearthSettingsGrdOceanEnum 398 398 syn keyword cConstant SolidearthSettingsOceanAreaScalingEnum 399 399 syn keyword cConstant StochasticForcingCovarianceEnum 400 syn keyword cConstant StochasticForcingDefaultDimensionEnum 400 401 syn keyword cConstant StochasticForcingDimensionsEnum 401 402 syn keyword cConstant StochasticForcingFieldsEnum 402 403 syn keyword cConstant StochasticForcingIsStochasticForcingEnum … … 427 428 syn keyword cConstant SmbAccurefEnum 428 429 syn keyword cConstant SmbAdThreshEnum 429 430 syn keyword cConstant SmbAutoregressionInitialTimeEnum 430 syn keyword cConstant SmbAutoregressionNoiseEnum431 431 syn keyword cConstant SmbAutoregressionTimestepEnum 432 432 syn keyword cConstant SmbAutoregressiveOrderEnum 433 433 syn keyword cConstant SmbAveragingEnum … … 503 503 syn keyword cConstant StressbalanceRestolEnum 504 504 syn keyword cConstant StressbalanceRiftPenaltyThresholdEnum 505 505 syn keyword cConstant StressbalanceShelfDampeningEnum 506 syn keyword cConstant ThermalforcingAutoregressionNoiseEnum507 506 syn keyword cConstant ThermalIsdrainicecolumnEnum 508 507 syn keyword cConstant ThermalIsdynamicbasalspcEnum 509 508 syn keyword cConstant ThermalIsenthalpyEnum … … 601 600 syn keyword cConstant BaseOldEnum 602 601 syn keyword cConstant BaseSlopeXEnum 603 602 syn keyword cConstant BaseSlopeYEnum 603 syn keyword cConstant BaselineCalvingCalvingrateEnum 604 604 syn keyword cConstant BedEnum 605 605 syn keyword cConstant BedGRDEnum 606 606 syn keyword cConstant BedEastEnum … … 894 894 syn keyword cConstant SmbAccumulationEnum 895 895 syn keyword cConstant SmbAdiffiniEnum 896 896 syn keyword cConstant SmbAiniEnum 897 syn keyword cConstant SmbAutoregressionNoiseEnum 897 898 syn keyword cConstant SmbBasinsIdEnum 898 899 syn keyword cConstant SmbBMaxEnum 899 900 syn keyword cConstant SmbBMinEnum … … 996 997 syn keyword cConstant SolidearthExternalDisplacementNorthRateEnum 997 998 syn keyword cConstant SolidearthExternalDisplacementUpRateEnum 998 999 syn keyword cConstant SolidearthExternalGeoidRateEnum 1000 syn keyword cConstant StochasticForcingDefaultIdEnum 999 1001 syn keyword cConstant StrainRateeffectiveEnum 1000 1002 syn keyword cConstant StrainRateparallelEnum 1001 1003 syn keyword cConstant StrainRateperpendicularEnum … … 1031 1033 syn keyword cConstant TemperaturePDDEnum 1032 1034 syn keyword cConstant TemperaturePicardEnum 1033 1035 syn keyword cConstant TemperatureSEMICEnum 1036 syn keyword cConstant ThermalforcingAutoregressionNoiseEnum 1034 1037 syn keyword cConstant ThermalforcingValuesAutoregressionEnum 1035 1038 syn keyword cConstant ThermalSpctemperatureEnum 1036 1039 syn keyword cConstant ThicknessAbsGradientEnum -
../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
391 391 SolidearthSettingsGrdOceanEnum, 392 392 SolidearthSettingsOceanAreaScalingEnum, 393 393 StochasticForcingCovarianceEnum, 394 StochasticForcingDefaultDimensionEnum, 394 395 StochasticForcingDimensionsEnum, 395 396 StochasticForcingFieldsEnum, 396 397 StochasticForcingIsStochasticForcingEnum, … … 421 422 SmbAccurefEnum, 422 423 SmbAdThreshEnum, 423 424 SmbAutoregressionInitialTimeEnum, 424 SmbAutoregressionNoiseEnum,425 425 SmbAutoregressionTimestepEnum, 426 426 SmbAutoregressiveOrderEnum, 427 427 SmbAveragingEnum, … … 497 497 StressbalanceRestolEnum, 498 498 StressbalanceRiftPenaltyThresholdEnum, 499 499 StressbalanceShelfDampeningEnum, 500 ThermalforcingAutoregressionNoiseEnum,501 500 ThermalIsdrainicecolumnEnum, 502 501 ThermalIsdynamicbasalspcEnum, 503 502 ThermalIsenthalpyEnum, … … 597 596 BaseOldEnum, 598 597 BaseSlopeXEnum, 599 598 BaseSlopeYEnum, 599 BaselineCalvingCalvingrateEnum, 600 600 BedEnum, 601 601 BedGRDEnum, 602 602 BedEastEnum, … … 890 890 SmbAccumulationEnum, 891 891 SmbAdiffiniEnum, 892 892 SmbAiniEnum, 893 SmbAutoregressionNoiseEnum, 893 894 SmbBasinsIdEnum, 894 895 SmbBMaxEnum, 895 896 SmbBMinEnum, … … 993 994 SolidearthExternalDisplacementNorthRateEnum, 994 995 SolidearthExternalDisplacementUpRateEnum, 995 996 SolidearthExternalGeoidRateEnum, 997 StochasticForcingDefaultIdEnum, 996 998 StrainRateeffectiveEnum, 997 999 StrainRateparallelEnum, 998 1000 StrainRateperpendicularEnum, … … 1028 1030 TemperaturePDDEnum, 1029 1031 TemperaturePicardEnum, 1030 1032 TemperatureSEMICEnum, 1033 ThermalforcingAutoregressionNoiseEnum, 1031 1034 ThermalforcingValuesAutoregressionEnum, 1032 1035 ThermalSpctemperatureEnum, 1033 1036 ThicknessAbsGradientEnum, -
../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
399 399 case SolidearthSettingsGrdOceanEnum : return "SolidearthSettingsGrdOcean"; 400 400 case SolidearthSettingsOceanAreaScalingEnum : return "SolidearthSettingsOceanAreaScaling"; 401 401 case StochasticForcingCovarianceEnum : return "StochasticForcingCovariance"; 402 case StochasticForcingDefaultDimensionEnum : return "StochasticForcingDefaultDimension"; 402 403 case StochasticForcingDimensionsEnum : return "StochasticForcingDimensions"; 403 404 case StochasticForcingFieldsEnum : return "StochasticForcingFields"; 404 405 case StochasticForcingIsStochasticForcingEnum : return "StochasticForcingIsStochasticForcing"; … … 429 430 case SmbAccurefEnum : return "SmbAccuref"; 430 431 case SmbAdThreshEnum : return "SmbAdThresh"; 431 432 case SmbAutoregressionInitialTimeEnum : return "SmbAutoregressionInitialTime"; 432 case SmbAutoregressionNoiseEnum : return "SmbAutoregressionNoise";433 433 case SmbAutoregressionTimestepEnum : return "SmbAutoregressionTimestep"; 434 434 case SmbAutoregressiveOrderEnum : return "SmbAutoregressiveOrder"; 435 435 case SmbAveragingEnum : return "SmbAveraging"; … … 505 505 case StressbalanceRestolEnum : return "StressbalanceRestol"; 506 506 case StressbalanceRiftPenaltyThresholdEnum : return "StressbalanceRiftPenaltyThreshold"; 507 507 case StressbalanceShelfDampeningEnum : return "StressbalanceShelfDampening"; 508 case ThermalforcingAutoregressionNoiseEnum : return "ThermalforcingAutoregressionNoise";509 508 case ThermalIsdrainicecolumnEnum : return "ThermalIsdrainicecolumn"; 510 509 case ThermalIsdynamicbasalspcEnum : return "ThermalIsdynamicbasalspc"; 511 510 case ThermalIsenthalpyEnum : return "ThermalIsenthalpy"; … … 603 602 case BaseOldEnum : return "BaseOld"; 604 603 case BaseSlopeXEnum : return "BaseSlopeX"; 605 604 case BaseSlopeYEnum : return "BaseSlopeY"; 605 case BaselineCalvingCalvingrateEnum : return "BaselineCalvingCalvingrate"; 606 606 case BedEnum : return "Bed"; 607 607 case BedGRDEnum : return "BedGRD"; 608 608 case BedEastEnum : return "BedEast"; … … 896 896 case SmbAccumulationEnum : return "SmbAccumulation"; 897 897 case SmbAdiffiniEnum : return "SmbAdiffini"; 898 898 case SmbAiniEnum : return "SmbAini"; 899 case SmbAutoregressionNoiseEnum : return "SmbAutoregressionNoise"; 899 900 case SmbBasinsIdEnum : return "SmbBasinsId"; 900 901 case SmbBMaxEnum : return "SmbBMax"; 901 902 case SmbBMinEnum : return "SmbBMin"; … … 998 999 case SolidearthExternalDisplacementNorthRateEnum : return "SolidearthExternalDisplacementNorthRate"; 999 1000 case SolidearthExternalDisplacementUpRateEnum : return "SolidearthExternalDisplacementUpRate"; 1000 1001 case SolidearthExternalGeoidRateEnum : return "SolidearthExternalGeoidRate"; 1002 case StochasticForcingDefaultIdEnum : return "StochasticForcingDefaultId"; 1001 1003 case StrainRateeffectiveEnum : return "StrainRateeffective"; 1002 1004 case StrainRateparallelEnum : return "StrainRateparallel"; 1003 1005 case StrainRateperpendicularEnum : return "StrainRateperpendicular"; … … 1033 1035 case TemperaturePDDEnum : return "TemperaturePDD"; 1034 1036 case TemperaturePicardEnum : return "TemperaturePicard"; 1035 1037 case TemperatureSEMICEnum : return "TemperatureSEMIC"; 1038 case ThermalforcingAutoregressionNoiseEnum : return "ThermalforcingAutoregressionNoise"; 1036 1039 case ThermalforcingValuesAutoregressionEnum : return "ThermalforcingValuesAutoregression"; 1037 1040 case ThermalSpctemperatureEnum : return "ThermalSpctemperature"; 1038 1041 case ThicknessAbsGradientEnum : return "ThicknessAbsGradient"; -
../trunk-jpl/src/c/shared/Enum/Enumjl.vim
169 169 syn keyword juliaConstC FrictionThresholdSpeedEnum 170 170 syn keyword juliaConstC FrictionVoidRatioEnum 171 171 syn keyword juliaConstC FrontalForcingsBasinIcefrontAreaEnum 172 syn keyword juliaConstC FrontalForcingsAutoregressionInitialTimeEnum 173 syn keyword juliaConstC FrontalForcingsAutoregressionTimestepEnum 174 syn keyword juliaConstC FrontalForcingsAutoregressiveOrderEnum 175 syn keyword juliaConstC FrontalForcingsBeta0Enum 176 syn keyword juliaConstC FrontalForcingsBeta1Enum 172 177 syn keyword juliaConstC FrontalForcingsNumberofBasinsEnum 173 178 syn keyword juliaConstC FrontalForcingsParamEnum 179 syn keyword juliaConstC FrontalForcingsPhiEnum 174 180 syn keyword juliaConstC GrdModelEnum 175 181 syn keyword juliaConstC GroundinglineFrictionInterpolationEnum 176 182 syn keyword juliaConstC GroundinglineMeltInterpolationEnum … … 383 389 syn keyword juliaConstC SolidearthSettingsMaxiterEnum 384 390 syn keyword juliaConstC SolidearthSettingsGrdOceanEnum 385 391 syn keyword juliaConstC SolidearthSettingsOceanAreaScalingEnum 392 syn keyword juliaConstC StochasticForcingCovarianceEnum 393 syn keyword juliaConstC StochasticForcingDefaultDimensionEnum 394 syn keyword juliaConstC StochasticForcingDimensionsEnum 395 syn keyword juliaConstC StochasticForcingFieldsEnum 396 syn keyword juliaConstC StochasticForcingIsStochasticForcingEnum 397 syn keyword juliaConstC StochasticForcingNumFieldsEnum 398 syn keyword juliaConstC StochasticForcingRandomflagEnum 386 399 syn keyword juliaConstC RotationalPolarMoiEnum 387 400 syn keyword juliaConstC SolidearthSettingsReltolEnum 388 401 syn keyword juliaConstC SealevelchangeRequestedOutputsEnum … … 413 426 syn keyword juliaConstC SmbAveragingEnum 414 427 syn keyword juliaConstC SmbBeta0Enum 415 428 syn keyword juliaConstC SmbBeta1Enum 416 syn keyword juliaConstC SmbCovmatEnum417 429 syn keyword juliaConstC SmbDesfacEnum 418 430 syn keyword juliaConstC SmbDpermilEnum 419 431 syn keyword juliaConstC SmbDsnowIdxEnum … … 423 435 syn keyword juliaConstC SmbDenIdxEnum 424 436 syn keyword juliaConstC SmbDtEnum 425 437 syn keyword juliaConstC SmbEnum 438 syn keyword juliaConstC SmbEIdxEnum 426 439 syn keyword juliaConstC SmbFEnum 427 440 syn keyword juliaConstC SmbInitDensityScalingEnum 428 441 syn keyword juliaConstC SmbIsaccumulationEnum … … 431 444 syn keyword juliaConstC SmbIsd18opdEnum 432 445 syn keyword juliaConstC SmbIsdelta18oEnum 433 446 syn keyword juliaConstC SmbIsdensificationEnum 447 syn keyword juliaConstC SmbIsdeltaLWupEnum 434 448 syn keyword juliaConstC SmbIsfirnwarmingEnum 435 449 syn keyword juliaConstC SmbIsgraingrowthEnum 436 450 syn keyword juliaConstC SmbIsmeltEnum … … 446 460 syn keyword juliaConstC SmbNumRequestedOutputsEnum 447 461 syn keyword juliaConstC SmbPfacEnum 448 462 syn keyword juliaConstC SmbPhiEnum 449 syn keyword juliaConstC SmbRandomflagEnum450 463 syn keyword juliaConstC SmbRdlEnum 451 464 syn keyword juliaConstC SmbRequestedOutputsEnum 452 465 syn keyword juliaConstC SmbRlapsEnum … … 459 472 syn keyword juliaConstC SmbSwIdxEnum 460 473 syn keyword juliaConstC SmbT0dryEnum 461 474 syn keyword juliaConstC SmbT0wetEnum 475 syn keyword juliaConstC SmbTeThreshEnum 462 476 syn keyword juliaConstC SmbTdiffEnum 463 477 syn keyword juliaConstC SmbThermoDeltaTScalingEnum 464 478 syn keyword juliaConstC SmbTemperaturesReconstructedYearsEnum … … 579 593 syn keyword juliaConstC BaseOldEnum 580 594 syn keyword juliaConstC BaseSlopeXEnum 581 595 syn keyword juliaConstC BaseSlopeYEnum 596 syn keyword juliaConstC BaselineCalvingCalvingrateEnum 582 597 syn keyword juliaConstC BedEnum 583 598 syn keyword juliaConstC BedGRDEnum 584 599 syn keyword juliaConstC BedEastEnum … … 872 887 syn keyword juliaConstC SmbAccumulationEnum 873 888 syn keyword juliaConstC SmbAdiffiniEnum 874 889 syn keyword juliaConstC SmbAiniEnum 890 syn keyword juliaConstC SmbAutoregressionNoiseEnum 875 891 syn keyword juliaConstC SmbBasinsIdEnum 876 892 syn keyword juliaConstC SmbBMaxEnum 877 893 syn keyword juliaConstC SmbBMinEnum … … 893 909 syn keyword juliaConstC SmbDailywindspeedEnum 894 910 syn keyword juliaConstC SmbDiniEnum 895 911 syn keyword juliaConstC SmbDlwrfEnum 912 syn keyword juliaConstC SmbDulwrfValueEnum 896 913 syn keyword juliaConstC SmbDswrfEnum 897 914 syn keyword juliaConstC SmbDswdiffrfEnum 898 915 syn keyword juliaConstC SmbDzAddEnum … … 973 990 syn keyword juliaConstC SolidearthExternalDisplacementNorthRateEnum 974 991 syn keyword juliaConstC SolidearthExternalDisplacementUpRateEnum 975 992 syn keyword juliaConstC SolidearthExternalGeoidRateEnum 993 syn keyword juliaConstC StochasticForcingDefaultIdEnum 976 994 syn keyword juliaConstC StrainRateeffectiveEnum 977 995 syn keyword juliaConstC StrainRateparallelEnum 978 996 syn keyword juliaConstC StrainRateperpendicularEnum … … 1008 1026 syn keyword juliaConstC TemperaturePDDEnum 1009 1027 syn keyword juliaConstC TemperaturePicardEnum 1010 1028 syn keyword juliaConstC TemperatureSEMICEnum 1029 syn keyword juliaConstC ThermalforcingAutoregressionNoiseEnum 1030 syn keyword juliaConstC ThermalforcingValuesAutoregressionEnum 1011 1031 syn keyword juliaConstC ThermalSpctemperatureEnum 1012 1032 syn keyword juliaConstC ThicknessAbsGradientEnum 1013 1033 syn keyword juliaConstC ThicknessAbsMisfitEnum … … 1254 1274 syn keyword juliaConstC FreeSurfaceTopAnalysisEnum 1255 1275 syn keyword juliaConstC FrontalForcingsDefaultEnum 1256 1276 syn keyword juliaConstC FrontalForcingsRignotEnum 1277 syn keyword juliaConstC FrontalForcingsRignotAutoregressionEnum 1257 1278 syn keyword juliaConstC FsetEnum 1258 1279 syn keyword juliaConstC FullMeltOnPartiallyFloatingEnum 1259 1280 syn keyword juliaConstC GLheightadvectionAnalysisEnum -
../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
408 408 else if (strcmp(name,"SolidearthSettingsGrdOcean")==0) return SolidearthSettingsGrdOceanEnum; 409 409 else if (strcmp(name,"SolidearthSettingsOceanAreaScaling")==0) return SolidearthSettingsOceanAreaScalingEnum; 410 410 else if (strcmp(name,"StochasticForcingCovariance")==0) return StochasticForcingCovarianceEnum; 411 else if (strcmp(name,"StochasticForcingDefaultDimension")==0) return StochasticForcingDefaultDimensionEnum; 411 412 else if (strcmp(name,"StochasticForcingDimensions")==0) return StochasticForcingDimensionsEnum; 412 413 else if (strcmp(name,"StochasticForcingFields")==0) return StochasticForcingFieldsEnum; 413 414 else if (strcmp(name,"StochasticForcingIsStochasticForcing")==0) return StochasticForcingIsStochasticForcingEnum; … … 438 439 else if (strcmp(name,"SmbAccuref")==0) return SmbAccurefEnum; 439 440 else if (strcmp(name,"SmbAdThresh")==0) return SmbAdThreshEnum; 440 441 else if (strcmp(name,"SmbAutoregressionInitialTime")==0) return SmbAutoregressionInitialTimeEnum; 441 else if (strcmp(name,"SmbAutoregressionNoise")==0) return SmbAutoregressionNoiseEnum;442 442 else if (strcmp(name,"SmbAutoregressionTimestep")==0) return SmbAutoregressionTimestepEnum; 443 443 else if (strcmp(name,"SmbAutoregressiveOrder")==0) return SmbAutoregressiveOrderEnum; 444 444 else if (strcmp(name,"SmbAveraging")==0) return SmbAveragingEnum; … … 517 517 else if (strcmp(name,"StressbalanceRestol")==0) return StressbalanceRestolEnum; 518 518 else if (strcmp(name,"StressbalanceRiftPenaltyThreshold")==0) return StressbalanceRiftPenaltyThresholdEnum; 519 519 else if (strcmp(name,"StressbalanceShelfDampening")==0) return StressbalanceShelfDampeningEnum; 520 else if (strcmp(name,"ThermalforcingAutoregressionNoise")==0) return ThermalforcingAutoregressionNoiseEnum;521 520 else if (strcmp(name,"ThermalIsdrainicecolumn")==0) return ThermalIsdrainicecolumnEnum; 522 521 else if (strcmp(name,"ThermalIsdynamicbasalspc")==0) return ThermalIsdynamicbasalspcEnum; 523 522 else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum; … … 615 614 else if (strcmp(name,"BaseOld")==0) return BaseOldEnum; 616 615 else if (strcmp(name,"BaseSlopeX")==0) return BaseSlopeXEnum; 617 616 else if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum; 617 else if (strcmp(name,"BaselineCalvingCalvingrate")==0) return BaselineCalvingCalvingrateEnum; 618 618 else if (strcmp(name,"Bed")==0) return BedEnum; 619 619 else if (strcmp(name,"BedGRD")==0) return BedGRDEnum; 620 620 else if (strcmp(name,"BedEast")==0) return BedEastEnum; … … 917 917 else if (strcmp(name,"SmbAccumulation")==0) return SmbAccumulationEnum; 918 918 else if (strcmp(name,"SmbAdiffini")==0) return SmbAdiffiniEnum; 919 919 else if (strcmp(name,"SmbAini")==0) return SmbAiniEnum; 920 else if (strcmp(name,"SmbAutoregressionNoise")==0) return SmbAutoregressionNoiseEnum; 920 921 else if (strcmp(name,"SmbBasinsId")==0) return SmbBasinsIdEnum; 921 922 else if (strcmp(name,"SmbBMax")==0) return SmbBMaxEnum; 922 923 else if (strcmp(name,"SmbBMin")==0) return SmbBMinEnum; … … 996 997 else if (strcmp(name,"SmbSzaValue")==0) return SmbSzaValueEnum; 997 998 else if (strcmp(name,"SmbT")==0) return SmbTEnum; 998 999 else if (strcmp(name,"SmbTa")==0) return SmbTaEnum; 999 else if (strcmp(name,"SmbTeValue")==0) return SmbTeValueEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"SmbTemperaturesAnomaly")==0) return SmbTemperaturesAnomalyEnum; 1003 if (strcmp(name,"SmbTeValue")==0) return SmbTeValueEnum; 1004 else if (strcmp(name,"SmbTemperaturesAnomaly")==0) return SmbTemperaturesAnomalyEnum; 1004 1005 else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum; 1005 1006 else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum; 1006 1007 else if (strcmp(name,"SmbTemperaturesReconstructed")==0) return SmbTemperaturesReconstructedEnum; … … 1022 1023 else if (strcmp(name,"SolidearthExternalDisplacementNorthRate")==0) return SolidearthExternalDisplacementNorthRateEnum; 1023 1024 else if (strcmp(name,"SolidearthExternalDisplacementUpRate")==0) return SolidearthExternalDisplacementUpRateEnum; 1024 1025 else if (strcmp(name,"SolidearthExternalGeoidRate")==0) return SolidearthExternalGeoidRateEnum; 1026 else if (strcmp(name,"StochasticForcingDefaultId")==0) return StochasticForcingDefaultIdEnum; 1025 1027 else if (strcmp(name,"StrainRateeffective")==0) return StrainRateeffectiveEnum; 1026 1028 else if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum; 1027 1029 else if (strcmp(name,"StrainRateperpendicular")==0) return StrainRateperpendicularEnum; … … 1057 1059 else if (strcmp(name,"TemperaturePDD")==0) return TemperaturePDDEnum; 1058 1060 else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum; 1059 1061 else if (strcmp(name,"TemperatureSEMIC")==0) return TemperatureSEMICEnum; 1062 else if (strcmp(name,"ThermalforcingAutoregressionNoise")==0) return ThermalforcingAutoregressionNoiseEnum; 1060 1063 else if (strcmp(name,"ThermalforcingValuesAutoregression")==0) return ThermalforcingValuesAutoregressionEnum; 1061 1064 else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum; 1062 1065 else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum; … … 1117 1120 else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum; 1118 1121 else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum; 1119 1122 else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum; 1120 else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;1121 else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;1122 else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"Outputdefinition2")==0) return Outputdefinition2Enum; 1126 if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum; 1127 else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum; 1128 else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum; 1129 else if (strcmp(name,"Outputdefinition2")==0) return Outputdefinition2Enum; 1127 1130 else if (strcmp(name,"Outputdefinition30")==0) return Outputdefinition30Enum; 1128 1131 else if (strcmp(name,"Outputdefinition31")==0) return Outputdefinition31Enum; 1129 1132 else if (strcmp(name,"Outputdefinition32")==0) return Outputdefinition32Enum; … … 1240 1243 else if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum; 1241 1244 else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum; 1242 1245 else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum; 1243 else if (strcmp(name,"Cfsurfacesquare")==0) return CfsurfacesquareEnum;1244 else if (strcmp(name,"Cflevelsetmisfit")==0) return CflevelsetmisfitEnum;1245 else if (strcmp(name,"Channel")==0) return ChannelEnum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"ChannelArea")==0) return ChannelAreaEnum; 1249 if (strcmp(name,"Cfsurfacesquare")==0) return CfsurfacesquareEnum; 1250 else if (strcmp(name,"Cflevelsetmisfit")==0) return CflevelsetmisfitEnum; 1251 else if (strcmp(name,"Channel")==0) return ChannelEnum; 1252 else if (strcmp(name,"ChannelArea")==0) return ChannelAreaEnum; 1250 1253 else if (strcmp(name,"ChannelAreaOld")==0) return ChannelAreaOldEnum; 1251 1254 else if (strcmp(name,"ChannelDischarge")==0) return ChannelDischargeEnum; 1252 1255 else if (strcmp(name,"Closed")==0) return ClosedEnum; … … 1363 1366 else if (strcmp(name,"IntParam")==0) return IntParamEnum; 1364 1367 else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum; 1365 1368 else if (strcmp(name,"Inputs")==0) return InputsEnum; 1366 else if (strcmp(name,"Internal")==0) return InternalEnum;1367 else if (strcmp(name,"Intersect")==0) return IntersectEnum;1368 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;1369 1369 else stage=12; 1370 1370 } 1371 1371 if(stage==12){ 1372 if (strcmp(name,"J")==0) return JEnum; 1372 if (strcmp(name,"Internal")==0) return InternalEnum; 1373 else if (strcmp(name,"Intersect")==0) return IntersectEnum; 1374 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum; 1375 else if (strcmp(name,"J")==0) return JEnum; 1373 1376 else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum; 1374 1377 else if (strcmp(name,"MLHOApproximation")==0) return MLHOApproximationEnum; 1375 1378 else if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum; … … 1486 1489 else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; 1487 1490 else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum; 1488 1491 else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; 1489 else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;1490 else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;1491 else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;1492 1492 else stage=13; 1493 1493 } 1494 1494 if(stage==13){ 1495 if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum; 1495 if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum; 1496 else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum; 1497 else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum; 1498 else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum; 1496 1499 else if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum; 1497 1500 else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum; 1498 1501 else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum; -
../trunk-jpl/test/NightlyRun/test257.m
48 48 %Stochastic forcing 49 49 md.stochasticforcing.isstochasticforcing = 1; 50 50 md.stochasticforcing.fields = [{'SMBautoregression'}]; 51 md.stochasticforcing.dimensions = [md.smb.num_basins]; %dimension of each field52 51 md.stochasticforcing.covariance = [[0.15 0.08 -0.02];[0.08 0.12 -0.05];[-0.02 -0.05 0.1]]; %global covariance among- and between-fields 53 52 md.stochasticforcing.randomflag = 0; %fixed random seeds 54 53 -
../trunk-jpl/test/NightlyRun/test257.py
55 55 # Stochastic forcing 56 56 md.stochasticforcing.isstochasticforcing = 1 57 57 md.stochasticforcing.fields = ['SMBautoregression'] 58 md.stochasticforcing.dimensions = [md.smb.num_basins] # dimension of each field59 58 md.stochasticforcing.covariance = np.array([[0.15, 0.08, -0.02], [0.08, 0.12, -0.05], [-0.02, -0.05, 0.1]]) # global covariance among- and between-fields 60 59 md.stochasticforcing.randomflag = 0 # fixed random seeds 61 60 -
../trunk-jpl/test/NightlyRun/test543.m
38 38 %Stochastic forcing 39 39 md.stochasticforcing.isstochasticforcing = 1; 40 40 md.stochasticforcing.fields = [{'FrontalForcingsRignotAutoregression'}]; 41 md.stochasticforcing.dimensions = [md.frontalforcings.num_basins]; %dimension of each field42 41 md.stochasticforcing.covariance = 1e-4*[[1.5,0.5];[0.5,0.4]]; %global covariance among- and between-fields 43 42 md.stochasticforcing.randomflag = 0; %determines true/false randomness 44 43 -
../trunk-jpl/test/NightlyRun/test543.py
48 48 # Stochastic forcing 49 49 md.stochasticforcing.isstochasticforcing = 1 50 50 md.stochasticforcing.fields = ['FrontalForcingsRignotAutoregression'] 51 md.stochasticforcing.dimensions = [md.frontalforcings.num_basins] # dimension of each field52 51 md.stochasticforcing.covariance = 1e-4 * np.array([[1.5, 0.5], [0.5, 0.4]]) # global covariance among- and between-fields 53 52 md.stochasticforcing.randomflag = 0 # determines true/false randomness 54 53 -
../trunk-jpl/src/m/classes/stochasticforcing.m
7 7 properties (SetAccess=public) 8 8 isstochasticforcing = 0; 9 9 fields = NaN; 10 dimensions = NaN; 10 defaultdimension = 0; 11 default_id = NaN; 11 12 covariance = NaN; 12 13 randomflag = 1; 13 14 end … … 33 34 if ~self.isstochasticforcing, return; end 34 35 35 36 num_fields = numel(self.fields); 36 size_tot = sum(self.dimensions); 37 38 %Check that covariance matrix is positive definite 39 try 40 chol(self.covariance); 41 catch 42 error('md.stochasticforcing.covariance is not positive definite'); 43 end 37 44 45 %Check that all fields agree with the corresponding md class and if any field needs the default params 46 checkdefaults = false; %need to check defaults only if one of the field does not have its own dimensionality 47 for field=self.fields 48 %Checking agreement of classes 49 if(contains(field,'SMB')) 50 if~(isequal(class(md.smb),char(field))) 51 error('md.smb does not agree with stochasticforcing field %s', char(field)); 52 end 53 end 54 if(contains(field,'frontalforcings')) 55 if~(isequal(class(md.frontalforcings),char(field))) 56 error('md.frontalforcings does not agree with stochasticforcing field %s', char(field)); 57 end 58 end 59 %Checking for specific dimensions 60 if ~(strcmp(field,'SMBautoregression') || strcmp(field,'FrontalForcingsRignotAutoregression')) 61 checkdefaults = true; %field with non-specific dimensionality 62 end 63 end 64 65 %Retrieve sum of all the field dimensionalities 66 size_tot = self.defaultdimension*num_fields; 67 indSMBar = -1; %about to check for index of SMBautoregression 68 indTFar = -1; %about to check for index of FrontalForcingsRignotAutoregression 69 if any(contains(self.fields,'SMBautoregression')) 70 size_tot = size_tot-self.defaultdimension+md.smb.num_basins; 71 indSMBar = find(contains(self.fields,'SMBautoregression')); %index of SMBar, now check for consistency with TFar timestep (08Nov2021) 72 end 73 if any(contains(self.fields,'FrontalForcingsRignotAutoregression')) 74 size_tot = size_tot-self.defaultdimension+md.frontalforcings.num_basins; 75 indTFar = find(contains(self.fields,'FrontalForcingsRignotAutoregression')); %index of TFar, now check for consistency with SMBar timestep (08Nov2021) 76 end 77 78 if(indSMBar~=-1 && indTFar~=-1) %both autoregressive models are used: check autoregressive time step consistency 79 if((md.smb.ar_timestep~=md.frontalforcings.ar_timestep) && any(self.covariance(1+sum(self.dimensions(1:indSMBar-1)):sum(self.dimensions(1:indSMBar)),1+sum(self.dimensions(1:indTFar-1)):sum(self.dimensions(1:indTFar))))~=0) 80 error('SMBautoregression and FrontalForcingsRignotAutoregression have different ar_timestep and non-zero covariance'); 81 end 82 end 83 38 84 md = checkfield(md,'fieldname','stochasticforcing.isstochasticforcing','values',[0 1]); 39 md = checkfield(md,'fieldname','stochasticforcing.fields','numel',num_fields,'cell',1,'values',supportedstochforcings()); %VV check here 'cell' (19Oct2021) 40 md = checkfield(md,'fieldname','stochasticforcing.dimensions','NaN',1,'Inf',1,'>',0,'size',[1,num_fields]); %specific dimension for each field 85 md = checkfield(md,'fieldname','stochasticforcing.fields','numel',num_fields,'cell',1,'values',supportedstochforcings()); 41 86 md = checkfield(md,'fieldname','stochasticforcing.covariance','NaN',1,'Inf',1,'size',[size_tot,size_tot]); %global covariance matrix 42 87 md = checkfield(md,'fieldname','stochasticforcing.randomflag','numel',[1],'values',[0 1]); 43 44 %Check that all fields agree with the corresponding md class 45 for field=self.fields 46 if(contains(field,'SMB')) 47 if~(isequal(class(md.smb),char(field))) 48 error('md.smb does not agree with stochasticforcing field %s', char(field)); 49 end 50 end 51 if(contains(field,'frontalforcings')) 52 if~(isequal(class(md.frontalforcings),char(field))) 53 error('md.frontalforcings does not agree with stochasticforcing field %s', char(field)); 54 end 55 end 56 end 88 if(checkdefaults) %need to check the defaults 89 md = checkfield(md,'fieldname','stochasticforcing.defaultdimension','numel',1,'NaN',1,'Inf',1,'>',0); 90 md = checkfield(md,'fieldname','stochasticforcing.default_id','Inf',1,'>=',0,'<=',self.defaultdimension,'size',[md.mesh.numberofelements,1]); 91 end 57 92 end % }}} 58 93 function disp(self) % {{{ 59 94 disp(sprintf(' stochasticforcing parameters:')); 60 95 fielddisplay(self,'isstochasticforcing','is stochasticity activated?'); 61 96 fielddisplay(self,'fields','fields with stochasticity applied, ex: {''SMBautoregression''}, or {''FrontalForcingsRignotAutoregression''}'); 62 fielddisplay(self,'dimensions','dimensionality of each field'); 97 fielddisplay(self,'defaultdimension','dimensionality of the noise terms (does not apply to fields with their specific dimension)'); 98 fielddisplay(self,'default_id','id of each element for partitioning of the noise terms (does not apply to fields with their specific partition)'); 63 99 fielddisplay(self,'covariance','covariance matrix for within- and between-fields covariance (units must be squared field units)'); 64 100 fielddisplay(self,'randomflag','whether to apply real randomness (true) or pseudo-randomness with fixed seed (false)'); 65 101 disp('Available fields:'); … … 76 112 if ~self.isstochasticforcing 77 113 return 78 114 else 115 116 %Retrieve dimensionality of each field 117 dimensions = self.defaultdimension*ones(1,num_fields); 118 ind = 1; 119 for field=self.fields 120 %Checking for specific dimensions 121 if(strcmp(field,'SMBautoregression')) 122 dimensions(ind) = md.smb.num_basins; 123 end 124 if(strcmp(field,'FrontalForcingsRignotAutoregression')) 125 dimensions(ind) = md.frontalforcings.num_basins; 126 end 127 ind = ind+1; 128 end 129 79 130 %Scaling covariance matrix (scale column-by-column and row-by-row) 80 scaledfields = {' SMBautoregression'}; %list of fields that need scaling *1/yts131 scaledfields = {'DefaultCalving','SMBautoregression'}; %list of fields that need scaling *1/yts 81 132 tempcovariance = self.covariance; %copy of covariance to avoid writing back in member variable 82 133 for i=1:num_fields 83 134 if any(strcmp(scaledfields,self.fields(i))) 84 inds = [1+sum( self.dimensions(1:i-1)):1:sum(self.dimensions(1:i))];135 inds = [1+sum(dimensions(1:i-1)):1:sum(dimensions(1:i))]; 85 136 for row=inds %scale rows corresponding to scaled field 86 137 tempcovariance(row,:) = 1./yts*tempcovariance(row,:); 87 138 end … … 92 143 end 93 144 WriteData(fid,prefix,'data',num_fields,'name','md.stochasticforcing.num_fields','format','Integer'); 94 145 WriteData(fid,prefix,'object',self,'fieldname','fields','format','StringArray'); 95 WriteData(fid,prefix,'object',self,'fieldname','dimensions','format','IntMat'); 146 WriteData(fid,prefix,'data',dimensions,'name','md.stochasticforcing.dimensions','format','IntMat'); 147 WriteData(fid,prefix,'object',self,'fieldname','default_id','data',self.default_id-1,'format','IntMat','mattype',2); %0-indexed 148 WriteData(fid,prefix,'object',self,'fieldname','defaultdimension','format','Integer'); 96 149 WriteData(fid,prefix,'data',tempcovariance,'name','md.stochasticforcing.covariance','format','DoubleMat'); 97 150 WriteData(fid,prefix,'object',self,'fieldname','randomflag','format','Boolean'); 98 151 end … … 104 157 % by the class md.stochasticforcing 105 158 106 159 list = {... 107 'SMBautoregression',... 108 'FrontalForcingsRignotAutoregression' 160 'DefaultCalving',... 161 'FrontalForcingsRignotAutoregression',... 162 'SMBautoregression' 109 163 }; 110 164 end % }}} -
../trunk-jpl/src/m/classes/stochasticforcing.py
14 14 15 15 def __init__(self, *args): # {{{ 16 16 self.isstochasticforcing = 0 17 self.fields = np.nan 18 self.dimensions = np.nan 19 self.covariance = np.nan 20 self.randomflag = 1 17 self.fields = np.nan 18 self.defaultdimension = 0 19 self.default_id = np.nan 20 self.covariance = np.nan 21 self.randomflag = 1 21 22 22 23 if len(args) == 0: 23 24 self.setdefaultparameters() … … 28 29 s = ' stochasticforcing parameters:\n' 29 30 s += '{}\n'.format(fielddisplay(self, 'isstochasticforcing', 'is stochasticity activated?')) 30 31 s += '{}\n'.format(fielddisplay(self, 'fields', 'fields with stochasticity applied, ex: [\'SMBautoregression\'], or [\'FrontalForcingsRignotAutoregression\']')) 32 s += '{}\n'.format(fielddisplay(self, 'defaultdimension', 'dimensionality of the noise terms (does not apply to fields with their specific dimension)')) 33 s += '{}\n'.format(fielddisplay(self, 'default_id', 'id of each element for partitioning of the noise terms (does not apply to fields with their specific partition)')) 31 34 s += '{}\n'.format(fielddisplay(self, 'covariance', 'covariance matrix for within- and between-fields covariance (units must be squared field units)')) 32 35 s += '{}\n'.format(fielddisplay(self, 'randomflag', 'whether to apply real randomness (true) or pseudo-randomness with fixed seed (false)')) 33 36 s += 'Available fields:\n' 37 s += ' DefaultCalving\n' 34 38 s += ' SMBautoregression\n' 35 39 s += ' FrontalForcingsRignotAutoregression (thermal forcing)\n' 36 40 return s … … 50 54 return md 51 55 52 56 num_fields = numel(self.fields) 53 size_tot = np.sum(self.dimensions)54 57 55 md = checkfield(md, 'fieldname', 'stochasticforcing.isstochasticforcing', 'values', [0, 1])56 md = checkfield(md, 'fieldname', 'stochasticforcing.fields', 'numel', num_fields, 'cell', 1, 'values', supportedstochforcings()) # VV check here 'cell' (19Oct2021)57 md = checkfield(md, 'fieldname', 'stochasticforcing.dimensions', 'NaN', 1, 'Inf', 1, '>', 0, 'size', [num_fields]) # specific dimension for each field; NOTE: As opposed to MATLAB implementation, pass list58 md = checkfield(md, 'fieldname', 'stochasticforcing.covariance', 'NaN', 1, 'Inf', 1, 'size', [size_tot, size_tot]) # global covariance matrix59 md = checkfield(md, 'fieldname', 'stochasticforcing.randomflag', 'numel', [1], 'values', [0, 1])58 #Check that covariance matrix is positive definite 59 try: 60 np.linalg.cholesky(self.covariance); 61 except: 62 error('md.stochasticforcing.covariance is not positive definite'); 60 63 61 64 # Check that all fields agree with the corresponding md class 65 checkdefaults = False 62 66 for field in self.fields: 63 67 if (contains(field, 'SMB')): 64 68 if not (type(md.smb) == field): … … 66 70 if (contains(field, 'frontalforcings')): 67 71 if not (type(md.frontalforcings) == field): 68 72 error('md.frontalforcings does not agree with stochasticforcing field {}'.format(field)) 73 #Checking for specific dimensions 74 if (field!='SMBautoregression' or field!='FrontalForcingsRignotAutoregression'): 75 checkdefaults = True #field with non-specific dimensionality 76 77 #Retrieve sum of all the field dimensionalities 78 size_tot = self.defaultdimension*num_fields; 79 indSMBar = -1; #about to check for index of SMBautoregression 80 indTFar = -1; #about to check for index of FrontalForcingsRignotAutoregression 81 if ('SMBautoregression' in self.fields): 82 size_tot = size_tot-self.defaultdimension+md.smb.num_basins 83 indSMBar = np.where(self.fields=='SMBautoregression')[0][0] 84 if ('FrontalForcingsRignotAutoregression' in self.fields): 85 size_tot = size_tot-self.defaultdimension+md.frontalforcings.num_basins 86 indSMBar = np.where(self.fields=='FrontalForcingsRignotAutoregression')[0][0] 87 if (indSMBar!=-1 and indTFar!=-1): 88 if((md.smb.ar_timestep!=md.frontalforcings.ar_timestep) and np.any(self.covariance[np.sum(self.dimensions[0:indSMBar]).astype(int):np.sum(self.dimensions[0:indSMBar+1]).astype(int),np.sum(self.dimensions[0:indTFar]).astype(int):np.sum(self.dimensions[0:indTFar+1]).astype(int)]!=0)): 89 error('SMBautoregression and FrontalForcingsRignotAutoregression have different ar_timestep and non-zero covariance') 90 91 md = checkfield(md, 'fieldname', 'stochasticforcing.isstochasticforcing', 'values', [0, 1]) 92 md = checkfield(md, 'fieldname', 'stochasticforcing.fields', 'numel', num_fields, 'cell', 1, 'values', supportedstochforcings()) 93 #md = checkfield(md, 'fieldname', 'stochasticforcing.dimensions', 'NaN', 1, 'Inf', 1, '>', 0, 'size', [num_fields]) # specific dimension for each field; NOTE: As opposed to MATLAB implementation, pass list 94 md = checkfield(md, 'fieldname', 'stochasticforcing.covariance', 'NaN', 1, 'Inf', 1, 'size', [size_tot, size_tot]) # global covariance matrix 95 md = checkfield(md, 'fieldname', 'stochasticforcing.randomflag', 'numel', [1], 'values', [0, 1]) 96 if (checkdefaults): 97 md = checkfield(md, 'fieldname', 'stochasticforcing.defaultdimension', 'numel', 1, 'NaN', 1, 'Inf', 1, '>', 0) 98 md = checkfield(md, 'fieldname', 'stochasticforcing.default_id', 'Inf', 1, '>=', 0, '<=', self.defaultdimension, 'size', [md.mesh.numberofelements,1]) 69 99 return md 70 100 # }}} 71 101 … … 82 112 if not self.isstochasticforcing: 83 113 return md 84 114 else: 115 #Retrieve dimensionality of each field 116 dimensions = self.defaultdimension*np.ones(num_fields) 117 for ind,field in enumerate(self.fields): 118 #Checking for specific dimensions 119 if (field=='SMBautoregression'): 120 dimensions[ind] = md.smb.num_basins 121 if (field=='FrontalForcingsRignotAutoregression'): 122 dimensions[ind] = md.frontalforcings.num_basins 123 85 124 # Scaling covariance matrix (scale column-by-column and row-by-row) 86 scaledfields = [' SMBautoregression'] # list of fields that need scaling * 1/yts87 tempcovariance = self.covariance125 scaledfields = ['DefaultCalving','SMBautoregression'] # list of fields that need scaling * 1/yts 126 tempcovariance = np.copy(self.covariance) 88 127 for i in range(num_fields): 89 128 if self.fields[i] in scaledfields: 90 129 inds = range(int(np.sum(self.dimensions[0:i])), int(np.sum(self.dimensions[0:i + 1]))) 91 130 for row in inds: # scale rows corresponding to scaled field 92 tempcovariance[row, :] = 1 / yts * self.covariance[row, :]131 tempcovariance[row, :] = 1 / yts * tempcovariance[row, :] 93 132 for col in inds: # scale columns corresponding to scaled field 94 tempcovariance[:, col] = 1 / yts * self.covariance[:, col]133 tempcovariance[:, col] = 1 / yts * tempcovariance[:, col] 95 134 WriteData(fid, prefix, 'data', num_fields, 'name', 'md.stochasticforcing.num_fields', 'format', 'Integer') 96 135 WriteData(fid, prefix, 'object', self, 'fieldname', 'fields', 'format', 'StringArray') 97 WriteData(fid, prefix, 'object', self, 'fieldname','dimensions', 'format', 'IntMat') 136 WriteData(fid, prefix, 'data', 'dimensions', 'name', 'md.stochasticforcing.dimensions', 'format', 'IntMat') 137 WriteData(fid, prefix, 'object', self, 'fieldname', 'default_id', 'format', 'IntMat') #12Nov2021 make sure this is zero-indexed! 138 WriteData(fid, prefix, 'object', self, 'fieldname', 'defaultdimension', 'format', 'Integer') 98 139 WriteData(fid, prefix, 'data', tempcovariance, 'name', 'md.stochasticforcing.covariance', 'format', 'DoubleMat') 99 140 WriteData(fid, prefix, 'object', self, 'fieldname', 'randomflag', 'format', 'Boolean') 100 141 # }}} … … 103 144 """ Defines list of fields supported by the class stochasticforcings 104 145 """ 105 146 return [ 106 'SMBautoregression', 107 'FrontalForcingsRignotAutoregression' 147 'DefaultCalving', 148 'FrontalForcingsRignotAutoregression', 149 'SMBautoregression' 108 150 ]
Note:
See TracBrowser
for help on using the repository browser.