Changeset 17797
- Timestamp:
- 04/21/14 20:25:06 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r17684 r17797 827 827 input=this->inputs->GetInput(output_enum); 828 828 break; 829 case SigmaNNEnum: 830 this->ComputeSigmaNN(); 831 input=this->inputs->GetInput(output_enum); 832 break; 829 833 default: 830 834 _error_("input "<<EnumToStringx(output_enum)<<" not found in element"); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r17680 r17797 200 200 virtual IssmDouble SurfaceArea(void)=0; 201 201 virtual void InputDepthAverageAtBase(int enum_type,int average_enum_type)=0; 202 virtual void ComputeSigmaNN(void)=0; 202 203 virtual void ComputeBasalStress(Vector<IssmDouble>* sigma_b)=0; 203 204 virtual void ComputeStrainRate(Vector<IssmDouble>* eps)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r17680 r17797 56 56 void ComputeBasalStress(Vector<IssmDouble>* sigma_b); 57 57 void ComputeStrainRate(Vector<IssmDouble>* eps); 58 void ComputeSigmaNN(){_error_("not implemented yet");}; 58 59 void ComputeStressTensor(); 59 60 void ComputeDeviatoricStressTensor(); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r17680 r17797 54 54 IssmDouble CharacteristicLength(void); 55 55 void ComputeBasalStress(Vector<IssmDouble>* sigma_b){_error_("not implemented yet");}; 56 void ComputeSigmaNN(){_error_("not implemented yet");}; 56 57 void ComputeStrainRate(Vector<IssmDouble>* eps){_error_("not implemented yet");}; 57 58 void ComputeStressTensor(){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r17729 r17797 54 54 IssmDouble CharacteristicLength(void){_error_("not implemented yet");}; 55 55 void ComputeBasalStress(Vector<IssmDouble>* sigma_b){_error_("not implemented yet");}; 56 void ComputeSigmaNN(){_error_("not implemented yet");}; 56 57 void ComputeStrainRate(Vector<IssmDouble>* eps){_error_("not implemented yet");}; 57 58 void ComputeStressTensor(){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r17761 r17797 145 145 void Tria::ComputeBasalStress(Vector<IssmDouble>* eps){ 146 146 _error_("Not Implemented yet"); 147 } 148 /*}}}*/ 149 /*FUNCTION Tria::ComputeSigmaNN {{{*/ 150 void Tria::ComputeSigmaNN(){ 151 152 if(~IsOnBase()){ 153 IssmDouble sigma_nn=0; 154 this->inputs->AddInput(new TriaInput(SigmaNNEnum,&sigma_nn,P0Enum)); 155 return; 156 } 157 else{ 158 IssmDouble* xyz_list=NULL; 159 IssmDouble pressure,viscosity,sigma_nn; 160 IssmDouble sigma_xx,sigma_xy,sigma_yy; 161 IssmDouble epsilon[3]; /* epsilon=[exx,eyy,exy];*/ 162 IssmDouble base_normal[2]; 163 int domaintype,dim=2; 164 165 /* Get node coordinates and dof list: */ 166 GetVerticesCoordinates(&xyz_list); 167 168 /*Retrieve all inputs we will be needing: */ 169 this->FindParam(&domaintype,DomainTypeEnum); 170 if(domaintype==Domain2DhorizontalEnum) _error_("stress tensor calculation not supported for mesh of type " <<EnumToStringx(domaintype)<<", extrude mesh or call ComputeDeviatoricStressTensor"); 171 Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input); 172 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 173 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 174 175 /* Start looping on the number of vertices: */ 176 Gauss* gauss=NewGaussBase(1); 177 gauss->GaussPoint(0); 178 179 /*Compute strain rate viscosity and pressure: */ 180 this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input); 181 this->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,NULL); 182 pressure_input->GetInputValue(&pressure,gauss); 183 184 /*Compute Stress*/ 185 sigma_xx=2*viscosity*epsilon[0]-pressure; // sigma = nu eps - pressure 186 sigma_yy=2*viscosity*epsilon[1]-pressure; 187 sigma_xy=2*viscosity*epsilon[2]; 188 189 /*Get normal vector to the bed */ 190 NormalBase(&base_normal[0],xyz_list); 191 192 /*Compute sigma_nn*/ 193 sigma_nn=sigma_xx*base_normal[0]*base_normal[0] + sigma_xy*base_normal[0]*base_normal[1] + sigma_yy*base_normal[1]*base_normal[1]; 194 195 /*Add Stress tensor components into inputs*/ 196 this->inputs->AddInput(new TriaInput(SigmaNNEnum,&sigma_nn,P0Enum)); 197 198 /*Clean up and return*/ 199 xDelete<IssmDouble>(xyz_list); 200 delete gauss; 201 } 147 202 } 148 203 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r17680 r17797 52 52 IssmDouble CharacteristicLength(void); 53 53 void ComputeBasalStress(Vector<IssmDouble>* sigma_b); 54 void ComputeSigmaNN(); 54 55 void ComputeStrainRate(Vector<IssmDouble>* eps); 55 56 void ComputeStressTensor(); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r17763 r17797 539 539 HydrologyWaterVxEnum, 540 540 HydrologyWaterVyEnum, 541 SigmaNNEnum, 541 542 StressTensorEnum, 542 543 StressTensorxxEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r17763 r17797 528 528 case HydrologyWaterVxEnum : return "HydrologyWaterVx"; 529 529 case HydrologyWaterVyEnum : return "HydrologyWaterVy"; 530 case SigmaNNEnum : return "SigmaNN"; 530 531 case StressTensorEnum : return "StressTensor"; 531 532 case StressTensorxxEnum : return "StressTensorxx"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r17763 r17797 540 540 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 541 541 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 542 else if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum; 542 543 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 543 544 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; … … 628 629 else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum; 629 630 else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum; 630 else if (strcmp(name,"SubelementMigration2")==0) return SubelementMigration2Enum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"Contact")==0) return ContactEnum; 634 if (strcmp(name,"SubelementMigration2")==0) return SubelementMigration2Enum; 635 else if (strcmp(name,"Contact")==0) return ContactEnum; 635 636 else if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum; 636 637 else if (strcmp(name,"QmuMaskGroundediceLevelset")==0) return QmuMaskGroundediceLevelsetEnum;
Note:
See TracChangeset
for help on using the changeset viewer.