Changeset 21620
- Timestamp:
- 03/22/17 10:04:00 (8 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r21578 r21620 1561 1561 name==EsaNmotionEnum || 1562 1562 name==EsaEmotionEnum || 1563 name==EsaStrainratexxEnum || 1564 name==EsaStrainratexyEnum || 1565 name==EsaStrainrateyyEnum || 1566 name==EsaRotationrateEnum || 1563 1567 name==EsaDeltathicknessEnum || 1564 1568 name==GiaWEnum || … … 2121 2125 case DeviatoricStresszzEnum: 2122 2126 case DeviatoricStresseffectiveEnum: this->ComputeDeviatoricStressTensor(); break; 2127 case EsaStrainratexxEnum: 2128 case EsaStrainratexyEnum: 2129 case EsaStrainrateyyEnum: 2130 case EsaRotationrateEnum: this->ComputeEsaStrainAndVorticity(); break; 2123 2131 case SigmaNNEnum: this->ComputeSigmaNN(); break; 2124 2132 case LambdaSEnum: this->ComputeLambdaS(); break; … … 2673 2681 } 2674 2682 /*}}}*/ 2683 void Element::StrainRateESA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/ 2684 2685 /*Intermediaries*/ 2686 IssmDouble dvx[3]; 2687 IssmDouble dvy[3]; 2688 2689 /*Check that both inputs have been found*/ 2690 if(!vx_input || !vy_input){ 2691 _error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n"); 2692 } 2693 2694 /*Get strain rate assuming that epsilon has been allocated*/ 2695 vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss); 2696 vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss); 2697 epsilon[0] = dvx[0]; // normal strain rate x-direction 2698 epsilon[1] = dvy[1]; // normal strain rate y-direction 2699 epsilon[2] = 0.5*(dvx[1] + dvy[0]); // shear strain rate 2700 epsilon[3] = 0.5*(dvx[1] - dvy[0]); // rotation rate 2701 2702 }/*}}}*/ 2675 2703 void Element::StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/ 2676 2704 /*Compute the 3d Strain Rate (6 components): -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r21583 r21620 141 141 int Sid(); 142 142 void SmbGemb(); 143 void StrainRateESA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); 143 144 void StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 144 145 void StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input); … … 182 183 virtual void ComputeSigmaNN(void)=0; 183 184 virtual void ComputeStressTensor(void)=0; 185 virtual void ComputeEsaStrainAndVorticity(void)=0; 184 186 virtual void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0; 185 187 virtual void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r21583 r21620 53 53 void ComputeBasalStress(Vector<IssmDouble>* sigma_b); 54 54 void ComputeDeviatoricStressTensor(); 55 void ComputeEsaStrainAndVorticity(){_error_("not implemented yet!");}; 55 56 void ComputeSigmaNN(){_error_("not implemented yet");}; 56 57 void ComputeStressTensor(); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r21583 r21620 48 48 void ComputeBasalStress(Vector<IssmDouble>* sigma_b){_error_("not implemented yet");}; 49 49 void ComputeDeviatoricStressTensor(){_error_("not implemented yet");}; 50 void ComputeEsaStrainAndVorticity(){_error_("not implemented yet!");}; 50 51 void ComputeSigmaNN(){_error_("not implemented yet");}; 51 52 void ComputeStressTensor(){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r21583 r21620 50 50 void ComputeStressTensor(){_error_("not implemented yet");}; 51 51 void ComputeDeviatoricStressTensor(){_error_("not implemented yet");}; 52 void ComputeEsaStrainAndVorticity(){_error_("not implemented yet!");}; 52 53 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters); 53 54 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r21583 r21620 410 410 this->inputs->AddInput(new TriaInput(DeviatoricStresszzEnum,&tau_zz[0],P1Enum)); 411 411 this->inputs->AddInput(new TriaInput(DeviatoricStresseffectiveEnum,&tau_e[0],P1Enum)); 412 413 /*Clean up and return*/ 414 delete gauss; 415 } 416 /*}}}*/ 417 void Tria::ComputeEsaStrainAndVorticity(){ /*{{{*/ 418 419 IssmDouble xyz_list[NUMVERTICES][3]; 420 IssmDouble epsilon[4]; /* epsilon=[exx,eyy,exy+ (shear),exy- (rotation)];*/ 421 IssmDouble strain_xx[NUMVERTICES]; 422 IssmDouble strain_yy[NUMVERTICES]; 423 IssmDouble strain_xy[NUMVERTICES]; 424 IssmDouble vorticity_xy[NUMVERTICES]; 425 GaussTria* gauss=NULL; 426 427 /* Get node coordinates and dof list: */ 428 ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 429 430 /*Retrieve all inputs we will be needing: */ 431 Input* vx_input=this->GetInput(EsaEmotionEnum); _assert_(vx_input); 432 Input* vy_input=this->GetInput(EsaNmotionEnum); _assert_(vy_input); 433 434 /* Start looping on the number of vertices: */ 435 gauss=new GaussTria(); 436 for (int iv=0;iv<NUMVERTICES;iv++){ 437 gauss->GaussVertex(iv); 438 439 /*Compute strain rate and vorticity rate: */ 440 this->StrainRateESA(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 441 442 /*Compute Stress*/ 443 strain_xx[iv]=epsilon[0]; 444 strain_yy[iv]=epsilon[1]; 445 strain_xy[iv]=epsilon[2]; 446 vorticity_xy[iv]=epsilon[3]; 447 } 448 449 /*Add Stress tensor components into inputs*/ 450 this->inputs->AddInput(new TriaInput(EsaStrainratexxEnum,&strain_xx[0],P1Enum)); 451 this->inputs->AddInput(new TriaInput(EsaStrainrateyyEnum,&strain_yy[0],P1Enum)); 452 this->inputs->AddInput(new TriaInput(EsaStrainratexyEnum,&strain_xy[0],P1Enum)); 453 this->inputs->AddInput(new TriaInput(EsaRotationrateEnum,&vorticity_xy[0],P1Enum)); 412 454 413 455 /*Clean up and return*/ -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r21583 r21620 57 57 void ComputeBasalStress(Vector<IssmDouble>* sigma_b); 58 58 void ComputeDeviatoricStressTensor(); 59 void ComputeEsaStrainAndVorticity(); 59 60 void ComputeSigmaNN(); 60 61 void ComputeStressTensor(); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r21583 r21620 805 805 EsaNmotionEnum, 806 806 EsaEmotionEnum, 807 EsaStrainratexxEnum, 808 EsaStrainratexyEnum, 809 EsaStrainrateyyEnum, 810 EsaRotationrateEnum, 807 811 EsaDeltathicknessEnum, 808 812 EsaUElasticEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r21583 r21620 783 783 case EsaNmotionEnum : return "EsaNmotion"; 784 784 case EsaEmotionEnum : return "EsaEmotion"; 785 case EsaStrainratexxEnum : return "EsaStrainratexx"; 786 case EsaStrainratexyEnum : return "EsaStrainratexy"; 787 case EsaStrainrateyyEnum : return "EsaStrainrateyy"; 788 case EsaRotationrateEnum : return "EsaRotationrate"; 785 789 case EsaDeltathicknessEnum : return "EsaDeltathickness"; 786 790 case EsaUElasticEnum : return "EsaUElastic"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r21603 r21620 801 801 else if (strcmp(name,"EsaNmotion")==0) return EsaNmotionEnum; 802 802 else if (strcmp(name,"EsaEmotion")==0) return EsaEmotionEnum; 803 else if (strcmp(name,"EsaStrainratexx")==0) return EsaStrainratexxEnum; 804 else if (strcmp(name,"EsaStrainratexy")==0) return EsaStrainratexyEnum; 805 else if (strcmp(name,"EsaStrainrateyy")==0) return EsaStrainrateyyEnum; 806 else if (strcmp(name,"EsaRotationrate")==0) return EsaRotationrateEnum; 803 807 else if (strcmp(name,"EsaDeltathickness")==0) return EsaDeltathicknessEnum; 804 808 else if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum; … … 871 875 else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum; 872 876 else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum; 873 else if (strcmp(name,"Option")==0) return OptionEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"Option")==0) return OptionEnum; 874 881 else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum; 875 882 else if (strcmp(name,"OptionCell")==0) return OptionCellEnum; 876 883 else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum; 884 else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum; 881 885 else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum; 882 886 else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum; … … 994 998 else if (strcmp(name,"Open")==0) return OpenEnum; 995 999 else if (strcmp(name,"Air")==0) return AirEnum; 996 else if (strcmp(name,"Ice")==0) return IceEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Ice")==0) return IceEnum; 997 1004 else if (strcmp(name,"Melange")==0) return MelangeEnum; 998 1005 else if (strcmp(name,"Water")==0) return WaterEnum; 999 1006 else if (strcmp(name,"DataSet")==0) return DataSetEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Constraints")==0) return ConstraintsEnum; 1007 else if (strcmp(name,"Constraints")==0) return ConstraintsEnum; 1004 1008 else if (strcmp(name,"Loads")==0) return LoadsEnum; 1005 1009 else if (strcmp(name,"Materials")==0) return MaterialsEnum; -
issm/trunk-jpl/src/m/classes/esa.m
r21260 r21620 68 68 fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions'); 69 69 fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps'); 70 fielddisplay(self,'requested_outputs','additional outputs requested ( default: EsaUmotion)');70 fielddisplay(self,'requested_outputs','additional outputs requested (e.g., EsaUmotion, EsaStrainratexx, EsaRotationrate)'); 71 71 72 72 end % }}}
Note:
See TracChangeset
for help on using the changeset viewer.