Changeset 20719
- Timestamp:
- 06/09/16 11:23:46 (9 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
r20718 r20719 198 198 case DefaultCalvingEnum: 199 199 case CalvingDevEnum: 200 case CalvingMinthicknessEnum: 200 201 lsf_slopex_input = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input); 201 202 if(dim==2) lsf_slopey_input = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input); … … 251 252 switch(calvinglaw){ 252 253 case DefaultCalvingEnum: 254 case CalvingDevEnum: 255 case CalvingMinthicknessEnum: 253 256 lsf_slopex_input->GetInputValue(&dlsf[0],gauss); 254 257 if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],gauss); … … 271 274 272 275 case CalvingLevermannEnum: 273 case CalvingDevEnum:274 276 calvingratex_input->GetInputValue(&c[0],gauss); 275 277 if(dim==2) calvingratey_input->GetInputValue(&c[1],gauss); -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r20687 r20719 2077 2077 this->CalvingRateDev(); 2078 2078 break; 2079 case CalvingMinthicknessEnum: 2080 this->CalvingRateMinthickness(); 2081 break; 2079 2082 default: 2080 2083 _error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet"); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r20678 r20719 176 176 virtual void CalvingRateLevermann(void)=0; 177 177 virtual void CalvingRateDev(void){_error_("not implemented yet");}; 178 virtual void CalvingRateMinthickness(void){_error_("not implemented yet");}; 178 179 virtual void WriteLevelsetSegment(DataSet* segments){_error_("not implemented yet");}; 179 180 virtual void ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r20690 r20719 327 327 calvingratey[iv]=vy*sigma_vm/sigma_max; 328 328 calvingrate[iv]=sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]); 329 } 330 331 /*Add input*/ 332 this->inputs->AddInput(new TriaInput(CalvingratexEnum,&calvingratex[0],P1Enum)); 333 this->inputs->AddInput(new TriaInput(CalvingrateyEnum,&calvingratey[0],P1Enum)); 334 this->inputs->AddInput(new TriaInput(CalvingCalvingrateEnum,&calvingrate[0],P1Enum)); 335 336 /*Clean up and return*/ 337 delete gauss; 338 } 339 /*}}}*/ 340 void Tria::CalvingRateMinthickness(){/*{{{*/ 341 342 IssmDouble calvingratex[NUMVERTICES]; 343 IssmDouble calvingratey[NUMVERTICES]; 344 IssmDouble calvingrate[NUMVERTICES]; 345 IssmDouble vx,vy,H,minH; 346 347 /*Retrieve all inputs and parameters we will need*/ 348 Input* vx_input = inputs->GetInput(VxEnum); _assert_(vx_input); 349 Input* vy_input = inputs->GetInput(VyEnum); _assert_(vy_input); 350 Input* H_input = inputs->GetInput(ThicknessEnum); _assert_(H_input); 351 parameters->FindParam(&minH,CalvingMinthicknessEnum); 352 353 /* Start looping on the number of vertices: */ 354 GaussTria* gauss=new GaussTria(); 355 for(int iv=0;iv<NUMVERTICES;iv++){ 356 gauss->GaussVertex(iv); 357 358 /*Get velocity components and thickness*/ 359 vx_input->GetInputValue(&vx,gauss); 360 vy_input->GetInputValue(&vy,gauss); 361 H_input->GetInputValue(&H,gauss); 362 363 /*Assign values*/ 364 if(H>minH){ 365 calvingratex[iv]=0.; 366 calvingratey[iv]=0.; 367 calvingrate[iv]=0.; 368 } 369 else{ 370 calvingratex[iv]=vx+1e-2; //counter balance advance + add some retreat 371 calvingratey[iv]=vy+1e-2; 372 calvingrate[iv]=sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]); 373 } 329 374 } 330 375 -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r20461 r20719 54 54 void CalvingRateLevermann(); 55 55 void CalvingRateDev(); 56 void CalvingRateMinthickness(); 56 57 void WriteLevelsetSegment(DataSet* segments); 57 58 void ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments); -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r20690 r20719 2166 2166 } 2167 2167 /*}}}*/ 2168 void FemModel::CalvingRateMinthicknessx(){/*{{{*/ 2169 2170 for(int i=0;i<elements->Size();i++){ 2171 Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i)); 2172 element->CalvingRateMinthickness(); 2173 } 2174 } 2175 /*}}}*/ 2168 2176 void FemModel::StrainRateparallelx(){/*{{{*/ 2169 2177 -
issm/trunk-jpl/src/c/classes/FemModel.h
r20461 r20719 95 95 void CalvingRateLevermannx(); 96 96 void CalvingRateDevx(); 97 void CalvingRateMinthicknessx(); 97 98 void ResetLevelset(); 98 99 #ifdef _HAVE_DAKOTA_ -
issm/trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp
r20461 r20719 27 27 femmodel->ElementOperationx(&Element::CalvingRateDev); 28 28 break; 29 case CalvingMinthicknessEnum: 30 femmodel->CalvingRateMinthicknessx(); 31 break; 29 32 default: 30 33 _error_("Caving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
Note:
See TracChangeset
for help on using the changeset viewer.