Changeset 27789
- Timestamp:
- 06/15/23 12:27:15 (21 months ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 2 added
- 11 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
r27688 r27789 120 120 iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum); 121 121 break; 122 case CalvingCalvingMIPEnum: 123 break; 122 124 123 125 /*"Discrete" calving laws (need to specify rate as 0 so that we can still solve the level set equation)*/ … … 150 152 case FrontalForcingsDefaultEnum: 151 153 iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.meltingrate",CalvingMeltingrateEnum); 152 if ( calvinglaw == CalvingParameterizationEnum) {154 if ((calvinglaw == CalvingParameterizationEnum) || (calvinglaw == CalvingCalvingMIPEnum)) { 153 155 iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.ablationrate",CalvingAblationrateEnum); 154 156 } … … 256 258 case CalvingPollardEnum: 257 259 parameters->AddObject(iomodel->CopyConstantObject("md.calving.rc",CalvingRcEnum)); 260 break; 261 case CalvingCalvingMIPEnum: 262 parameters->AddObject(iomodel->CopyConstantObject("md.calving.experiment",CalvingUseParamEnum)); 263 parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum)); 258 264 break; 259 265 default: … … 748 754 749 755 /*Apply minimum thickness criterion*/ 750 if(calvinglaw==CalvingMinthicknessEnum || calvinglaw==CalvingVonmisesEnum || calvinglaw==CalvingParameterizationEnum || calvinglaw==CalvingVonmisesADEnum ){756 if(calvinglaw==CalvingMinthicknessEnum || calvinglaw==CalvingVonmisesEnum || calvinglaw==CalvingParameterizationEnum || calvinglaw==CalvingVonmisesADEnum || calvinglaw==CalvingCalvingMIPEnum){ 751 757 752 758 IssmDouble mig_max = femmodel->parameters->FindParam(MigrationMaxEnum); -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r27773 r27789 3793 3793 case CalvingParameterizationEnum: 3794 3794 this->CalvingRateParameterization(); 3795 break; 3796 case CalvingCalvingMIPEnum: 3797 this->CalvingRateCalvingMIP(); 3795 3798 break; 3796 3799 case CalvingTestEnum: -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r27717 r27789 238 238 virtual void BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement){_error_("not implemented yet");}; 239 239 virtual void CalvingRateParameterization(void){_error_("not implemented yet");}; 240 virtual void CalvingRateCalvingMIP(void){_error_("not implemented yet");}; 240 241 virtual void CalvingRateVonmises(void){_error_("not implemented yet");}; 241 242 virtual void CalvingRateVonmisesAD(void){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r27724 r27789 1115 1115 this->AddInput(SigmaVMEnum,&sigma_vm[0],P1DGEnum); 1116 1116 this->CalvingRateToVector(); 1117 1118 /*Clean up and return*/ 1119 delete gauss; 1120 } 1121 /*}}}*/ 1122 void Tria::CalvingRateCalvingMIP(){/*{{{*/ 1123 1124 IssmDouble calvingrate[NUMVERTICES]; 1125 IssmDouble calvingratex[NUMVERTICES]; 1126 IssmDouble calvingratey[NUMVERTICES]; 1127 int experiment = 1; /* exp:1 by default */ 1128 int dim, domaintype; 1129 IssmDouble vx, vy, vel, c, wrate; 1130 1131 /*Get problem dimension and whether there is moving front or not*/ 1132 this->FindParam(&domaintype,DomainTypeEnum); 1133 1134 switch(domaintype){ 1135 case Domain2DverticalEnum: dim = 1; break; 1136 case Domain2DhorizontalEnum: dim = 2; break; 1137 case Domain3DEnum: dim = 2; break; 1138 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); 1139 } 1140 if(dim==1) _error_("not implemented in 1D..."); 1141 1142 /*Retrieve all inputs and parameters we will need*/ 1143 Input *vx_input = this->GetInput(VxEnum); _assert_(vx_input); 1144 Input *vy_input = this->GetInput(VyEnum); _assert_(vy_input); 1145 Input *wrate_input = this->GetInput(CalvingAblationrateEnum); _assert_(wrate_input); 1146 1147 /* Use which experiment: use existing Enum */ 1148 this->FindParam(&experiment, CalvingUseParamEnum); 1149 1150 /* Start looping on the number of vertices: */ 1151 GaussTria* gauss=new GaussTria(); 1152 for(int iv=0;iv<NUMVERTICES;iv++){ 1153 gauss->GaussVertex(iv); 1154 1155 /*Get velocity components */ 1156 vx_input->GetInputValue(&vx,gauss); 1157 vy_input->GetInputValue(&vy,gauss); 1158 vel=sqrt(vx*vx+vy*vy)+1.e-14; 1159 1160 1161 switch (experiment) { 1162 case 1: 1163 case 3: 1164 /* Exp 1 and 3: set c=v-wrate, wrate=0, so that w=0 */ 1165 wrate = 0.0; 1166 break; 1167 case 2: 1168 case 4: 1169 /* Exp 2 and 4: set c=v-wrate(given)*/ 1170 /*Get wrate*/ 1171 wrate_input->GetInputValue(&wrate,gauss); 1172 break; 1173 default: 1174 _error_("The experiment is not supported yet!"); 1175 } 1176 1177 calvingrate[iv] = vel - wrate; 1178 calvingratex[iv] = vx - wrate*vx/vel; 1179 calvingratey[iv] = vy - wrate*vy/vel; 1180 } 1181 /*Add input*/ 1182 this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum); 1183 this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum); 1184 this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum); 1117 1185 1118 1186 /*Clean up and return*/ … … 4483 4551 case CalvingTestEnum: 4484 4552 case CalvingParameterizationEnum: 4553 case CalvingCalvingMIPEnum: 4485 4554 calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input); 4486 4555 calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input); … … 4528 4597 case CalvingLevermannEnum: 4529 4598 case CalvingPollardEnum: 4599 case CalvingCalvingMIPEnum: 4530 4600 calvingratex_input->GetInputValue(&c[0],&gauss); 4531 4601 calvingratey_input->GetInputValue(&c[1],&gauss); -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r27688 r27789 63 63 void CalvingMeltingFluxLevelset(); 64 64 void CalvingRateParameterization(); 65 void CalvingRateCalvingMIP(); 65 66 IssmDouble CharacteristicLength(void); 66 67 void ComputeBasalStress(void); -
issm/trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp
r27688 r27789 51 51 femmodel->ElementOperationx(&Element::CalvingPollard); 52 52 break; 53 case CalvingCalvingMIPEnum: 54 femmodel->ElementOperationx(&Element::CalvingRateCalvingMIP); 55 break; 53 56 default: 54 57 _error_("Caving law "<<EnumToStringx(calvinglaw)<<" not supported yet"); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r27780 r27789 1391 1391 CalvingTestEnum, 1392 1392 CalvingParameterizationEnum, 1393 CalvingCalvingMIPEnum, 1393 1394 CalvingVonmisesEnum, 1394 1395 CalvingVonmisesADEnum, -
issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
r27696 r27789 293 293 case 10: return CalvingPollardEnum; 294 294 case 11: return CalvingVonmisesADEnum; 295 case 12: return CalvingCalvingMIPEnum; 295 296 default: _error_("Marshalled Calving law code \""<<enum_in<<"\" not supported yet"); 296 297 } -
issm/trunk-jpl/src/m/contrib/chenggong/visualization/plotCompareTransientFlowline.m
r27694 r27789 16 16 % 17 17 % Author: Cheng Gong 18 % Date: 202 3-04-1018 % Date: 2021-12-06 19 19 20 20 N = length(velList); … … 46 46 h=colorbar; 47 47 title(h,'m/a') 48 % add a vertical line to indicate initial ice front position49 id = max(find(~isnan(cumsum(vel_flowline{p}(:,1)))));50 icefront = flowline.Xmain(id);51 plot([icefront, icefront], [2007,2020], '-r')52 48 end -
issm/trunk-jpl/src/m/exp/isoline.m
r26929 r27789 258 258 elseif strcmp(outputformat,'struct') 259 259 %nothing to do, this is the default 260 elseif strcmp(outputformat,'longest') 261 [~, mId] = max([contours.nods]); 262 contours = contours(mId); 260 263 else 261 264 disp('output format not supported, returning struct'); -
issm/trunk-jpl/src/m/modeldata/interpBedmachineGreenland.m
r27622 r27789 32 32 ncdate='2021-08-27'; 33 33 ncdate='2022-03-17'; 34 ncdate='2022-05-18'; 34 35 ncdate='2022-07-28'; 36 ncdate='v6.0'; 37 ncdate='v6.1'; 35 38 end 36 39 basename = 'BedMachineGreenland';
Note:
See TracChangeset
for help on using the changeset viewer.