source:
issm/oecreview/Archive/20545-21336/ISSM-20718-20719.diff@
21337
Last change on this file since 21337 was 21337, checked in by , 8 years ago | |
---|---|
File size: 7.0 KB |
-
../trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp
26 26 femmodel->CalvingRateDevx(); 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"); 31 34 } -
../trunk-jpl/src/c/classes/Elements/Element.cpp
2076 2076 case CalvingDevEnum: 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"); 2081 2084 } -
../trunk-jpl/src/c/classes/Elements/Element.h
175 175 virtual void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part)=0; 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");}; 180 181 virtual IssmDouble CharacteristicLength(void)=0; -
../trunk-jpl/src/c/classes/Elements/Tria.cpp
337 337 delete gauss; 338 338 } 339 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 } 374 } 375 376 /*Add input*/ 377 this->inputs->AddInput(new TriaInput(CalvingratexEnum,&calvingratex[0],P1Enum)); 378 this->inputs->AddInput(new TriaInput(CalvingrateyEnum,&calvingratey[0],P1Enum)); 379 this->inputs->AddInput(new TriaInput(CalvingCalvingrateEnum,&calvingrate[0],P1Enum)); 380 381 /*Clean up and return*/ 382 delete gauss; 383 } 384 /*}}}*/ 340 385 void Tria::WriteLevelsetSegment(DataSet* segments){/*{{{*/ 341 386 342 387 if(!this->IsZeroLevelset(MaskIceLevelsetEnum)) return; -
../trunk-jpl/src/c/classes/Elements/Tria.h
53 53 void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part); 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); 58 59 IssmDouble CharacteristicLength(void); -
../trunk-jpl/src/c/classes/FemModel.h
94 94 void DeviatoricStressx(); 95 95 void CalvingRateLevermannx(); 96 96 void CalvingRateDevx(); 97 void CalvingRateMinthicknessx(); 97 98 void ResetLevelset(); 98 99 #ifdef _HAVE_DAKOTA_ 99 100 void DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses); -
../trunk-jpl/src/c/classes/FemModel.cpp
2165 2165 } 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 2170 2178 for(int i=0;i<elements->Size();i++){ -
../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
197 197 switch(calvinglaw){ 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); 202 203 calvingrate_input = basalelement->GetInput(CalvingCalvingrateEnum); _assert_(calvingrate_input); … … 250 251 /*Get calving speed*/ 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); 255 258 calvingrate_input->GetInputValue(&calvingrate,gauss); … … 270 273 break; 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); 276 278 meltingrate_input->GetInputValue(&meltingrate,gauss);
Note:
See TracBrowser
for help on using the repository browser.