Changeset 25239
- Timestamp:
- 07/09/20 09:59:15 (5 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r25118 r25239 1291 1291 case Domain3DEnum: 1292 1292 if(!element->IsOnBase()) return NULL; 1293 basalelement = element->SpawnBasalElement( );1293 basalelement = element->SpawnBasalElement(true); 1294 1294 break; 1295 1295 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); … … 1377 1377 case Domain3DEnum: case Domain2DverticalEnum: 1378 1378 if(!element->IsOnBase()) return NULL; 1379 basalelement = element->SpawnBasalElement( );1379 basalelement = element->SpawnBasalElement(true); 1380 1380 break; 1381 1381 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet"); … … 2075 2075 2076 2076 /*Get element on base*/ 2077 Element* basalelement = element->GetBasalElement()->SpawnBasalElement( );2077 Element* basalelement = element->GetBasalElement()->SpawnBasalElement(true); 2078 2078 2079 2079 /*Fetch number of nodes and dof for this finite element*/ … … 6268 6268 /*Find penta on bed as this is a SSA elements: */ 6269 6269 Element* pentabase=element->GetBasalElement(); 6270 Element* basaltria=pentabase->SpawnBasalElement( );6270 Element* basaltria=pentabase->SpawnBasalElement(true); 6271 6271 6272 6272 /*Initialize Element matrix*/ -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r25066 r25239 338 338 virtual void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters)=0; 339 339 virtual void SetTemporaryElementType(int element_type_in)=0; 340 virtual Element* SpawnBasalElement( void)=0;340 virtual Element* SpawnBasalElement(bool depthaverage_materials=false)=0; 341 341 virtual Element* SpawnTopElement(void)=0; 342 342 virtual IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r25093 r25239 3421 3421 } 3422 3422 /*}}}*/ 3423 Element* Penta::SpawnBasalElement( void){/*{{{*/3423 Element* Penta::SpawnBasalElement(bool depthaverage_materials){/*{{{*/ 3424 3424 3425 3425 _assert_(this->IsOnBase()); 3426 3426 3427 switch(this->material->ObjectEnum()){ 3428 case MaticeEnum: 3429 this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); 3430 if(this->material->IsDamage())this->InputDepthAverageAtBase(DamageDEnum,DamageDbarEnum); 3431 if(this->material->IsEnhanced())this->InputDepthAverageAtBase(MaterialsRheologyEEnum,MaterialsRheologyEbarEnum); 3432 break; 3433 case MatestarEnum: 3434 this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); 3435 this->InputDepthAverageAtBase(MaterialsRheologyEcEnum,MaterialsRheologyEcbarEnum); 3436 this->InputDepthAverageAtBase(MaterialsRheologyEsEnum,MaterialsRheologyEsbarEnum); 3437 break; 3438 default: 3439 _error_("not supported yet"); 3440 } 3441 if(this->GetInput2(VxEnum)) this->InputDepthAverageAtBase(VxEnum,VxAverageEnum); 3442 if(this->GetInput2(VyEnum)) this->InputDepthAverageAtBase(VyEnum,VyAverageEnum); 3443 if(this->GetInput2(CalvingratexEnum)) this->InputDepthAverageAtBase(CalvingratexEnum,CalvingratexAverageEnum); 3444 if(this->GetInput2(CalvingrateyEnum)) this->InputDepthAverageAtBase(CalvingrateyEnum,CalvingrateyAverageEnum); 3445 3446 Tria* tria=(Tria*)SpawnTria(0,1,2); 3447 3448 return tria; 3427 if(depthaverage_materials){ 3428 switch(this->material->ObjectEnum()){ 3429 case MaticeEnum: 3430 this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); 3431 if(this->material->IsDamage())this->InputDepthAverageAtBase(DamageDEnum,DamageDbarEnum); 3432 if(this->material->IsEnhanced())this->InputDepthAverageAtBase(MaterialsRheologyEEnum,MaterialsRheologyEbarEnum); 3433 break; 3434 case MatestarEnum: 3435 this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); 3436 this->InputDepthAverageAtBase(MaterialsRheologyEcEnum,MaterialsRheologyEcbarEnum); 3437 this->InputDepthAverageAtBase(MaterialsRheologyEsEnum,MaterialsRheologyEsbarEnum); 3438 break; 3439 default: 3440 _error_("not supported yet"); 3441 } 3442 } 3443 3444 return SpawnTria(0,1,2); 3449 3445 } 3450 3446 /*}}}*/ … … 3452 3448 3453 3449 _assert_(this->IsOnSurface()); 3454 3455 Tria* tria=(Tria*)SpawnTria(3,4,5); 3456 3457 return tria; 3450 return SpawnTria(3,4,5); 3458 3451 } 3459 3452 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r25066 r25239 171 171 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 172 172 void SetTemporaryElementType(int element_type_in); 173 Element* SpawnBasalElement( void);173 Element* SpawnBasalElement(bool depthaverage_materials); 174 174 Element* SpawnTopElement(void); 175 175 Tria* SpawnTria(int index1,int index2,int index3); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r25066 r25239 138 138 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters){_error_("not implemented yet");}; 139 139 void SetTemporaryElementType(int element_type_in){_error_("not implemented yet");}; 140 Element* SpawnBasalElement( void){_error_("not implemented yet");};140 Element* SpawnBasalElement(bool depthaverage_materials){_error_("not implemented yet");}; 141 141 Element* SpawnTopElement(void){_error_("not implemented yet");}; 142 142 IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp
r24861 r25239 769 769 } 770 770 /*}}}*/ 771 Element* Tetra::SpawnBasalElement( void){/*{{{*/771 Element* Tetra::SpawnBasalElement(bool depthaverage_materials){/*{{{*/ 772 772 773 773 _assert_(HasFaceOnBase()); -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r25066 r25239 144 144 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 145 145 void SetTemporaryElementType(int element_type_in){_error_("not implemented yet");}; 146 Element* SpawnBasalElement( void);146 Element* SpawnBasalElement(bool depthaverage_materials); 147 147 Element* SpawnTopElement(void); 148 148 Tria* SpawnTria(int index1,int index2,int index3); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r25235 r25239 4030 4030 } 4031 4031 /*}}}*/ 4032 Element* Tria::SpawnBasalElement( void){/*{{{*/4032 Element* Tria::SpawnBasalElement(bool depthaverage_materials){/*{{{*/ 4033 4033 4034 4034 int index1,index2; -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r25150 r25239 132 132 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index); 133 133 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 134 Element* SpawnBasalElement( void);134 Element* SpawnBasalElement(bool depthaverage_materials); 135 135 Element* SpawnTopElement(void); 136 136 void StrainRateparallel(); -
issm/trunk-jpl/src/c/cores/balancethickness_core.cpp
r23380 r25239 12 12 void balancethickness_core(FemModel* femmodel){ 13 13 14 /*parameters: */15 bool save_results;16 17 /*activate formulation: */18 femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum);19 14 20 15 /*recover parameters: */ 16 bool save_results; 21 17 femmodel->parameters->FindParam(&save_results,SaveResultsEnum); 22 18 19 /*Depth average velocities if necessary*/ 20 int domaintype; 21 femmodel->parameters->FindParam(&domaintype,DomainTypeEnum); 22 if(domaintype!=Domain2DhorizontalEnum){ 23 femmodel->parameters->SetParam(VxEnum,InputToDepthaverageInEnum); 24 femmodel->parameters->SetParam(VxAverageEnum,InputToDepthaverageOutEnum); 25 depthaverage_core(femmodel); 26 if(domaintype==Domain3DEnum){ 27 femmodel->parameters->SetParam(VyEnum,InputToDepthaverageInEnum); 28 femmodel->parameters->SetParam(VyAverageEnum,InputToDepthaverageOutEnum); 29 depthaverage_core(femmodel); 30 } 31 } 32 23 33 if(VerboseSolution()) _printf0_(" call computational core:\n"); 34 femmodel->SetCurrentConfiguration(BalancethicknessAnalysisEnum); 24 35 solutionsequence_linear(femmodel); 25 36 -
issm/trunk-jpl/src/c/cores/movingfront_core.cpp
r24040 r25239 34 34 35 35 if(!ismovingfront) return; 36 37 /* Many calving parameterizations and the level set equations require depth 38 * average velocities so do this calculation once for all here */ 39 if(domaintype!=Domain2DhorizontalEnum){ 40 femmodel->parameters->SetParam(VxEnum,InputToDepthaverageInEnum); 41 femmodel->parameters->SetParam(VxAverageEnum,InputToDepthaverageOutEnum); 42 depthaverage_core(femmodel); 43 if(domaintype==Domain3DEnum){ 44 femmodel->parameters->SetParam(VyEnum,InputToDepthaverageInEnum); 45 femmodel->parameters->SetParam(VyAverageEnum,InputToDepthaverageOutEnum); 46 depthaverage_core(femmodel); 47 } 48 } 36 49 37 50 /* start the work from here */
Note:
See TracChangeset
for help on using the changeset viewer.