Changeset 17394
- Timestamp:
- 03/08/14 13:37:59 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r17359 r17394 7 7 #include "../cores/cores.h" 8 8 9 //#define FSANALYTICAL 1019 //#define FSANALYTICAL 4 10 10 11 11 /*Model processing*/ -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r17364 r17394 129 129 void Element::DeleteMaterials(void){/*{{{*/ 130 130 delete this->material; 131 }/*}}}*/ 132 IssmDouble Element::Divergence(void){/*{{{*/ 133 /*Compute element divergence*/ 134 135 /*Intermediaries*/ 136 IssmDouble Jdet; 137 IssmDouble divergence=0.; 138 IssmDouble dvx[3],dvy[3],dvz[3]; 139 IssmDouble *xyz_list = NULL; 140 141 /*Get inputs and parameters*/ 142 Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input); 143 Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input); 144 Input* vz_input = this->GetInput(VzEnum); _assert_(vz_input); 145 this->GetVerticesCoordinates(&xyz_list); 146 147 Gauss* gauss=this->NewGaussBase(5); 148 for(int ig=gauss->begin();ig<gauss->end();ig++){ 149 gauss->GaussPoint(ig); 150 this->JacobianDeterminant(&Jdet,xyz_list,gauss); 151 152 /*Get strain rate assuming that epsilon has been allocated*/ 153 vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss); 154 vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss); 155 vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss); 156 157 divergence += (dvx[0]+dvy[1]+dvz[2])*gauss->weight*Jdet; 158 } 159 160 /*Clean up and return*/ 161 delete gauss; 162 return divergence; 131 163 }/*}}}*/ 132 164 void Element::FindParam(bool* pvalue,int paramenum){/*{{{*/ -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r17372 r17394 56 56 void CoordinateSystemTransform(IssmDouble** ptransform,Node** nodes,int numnodes,int* cs_array); 57 57 void DeleteMaterials(void); 58 IssmDouble Divergence(void); 58 59 void FindParam(bool* pvalue,int paramenum); 59 60 void FindParam(int* pvalue,int paramenum); -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r17372 r17394 432 432 switch (response_descriptor_enum){ 433 433 434 case DivergenceEnum: this->Divergencex(responses); break; 434 435 case IceVolumeEnum: this->IceVolumex(responses); break; 435 436 case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(responses); break; … … 504 505 505 506 /*Scalar output*/ 507 case DivergenceEnum: this->Divergencex(&double_result); break; 506 508 case IceVolumeEnum: this->IceVolumex(&double_result); break; 507 509 case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(&double_result); break; … … 1042 1044 1043 1045 }/*}}}*/ 1046 void FemModel::Divergencex(IssmDouble* pdiv){/*{{{*/ 1047 1048 IssmDouble local_divergence=0; 1049 IssmDouble total_divergence; 1050 1051 for(int i=0;i<this->elements->Size();i++){ 1052 Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i)); 1053 local_divergence+=element->Divergence(); 1054 } 1055 ISSM_MPI_Reduce(&local_divergence,&total_divergence,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); 1056 ISSM_MPI_Bcast(&total_divergence,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); 1057 1058 /*Assign output pointers: */ 1059 *pdiv=total_divergence; 1060 1061 }/*}}}*/ 1044 1062 void FemModel::IceVolumex(IssmDouble* pV){/*{{{*/ 1045 1063 -
issm/trunk-jpl/src/c/classes/FemModel.h
r17361 r17394 72 72 void MinVzx(IssmDouble* presponse); 73 73 void TotalSmbx(IssmDouble* pSmb); 74 void Divergencex(IssmDouble* pdiv); 74 75 void IceVolumex(IssmDouble* pV); 75 76 void IceVolumeAboveFloatationx(IssmDouble* pV); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r17369 r17394 533 533 StressTensoryzEnum, 534 534 StressTensorzzEnum, 535 DivergenceEnum, 535 536 GiaCrossSectionShapeEnum, 536 537 GiadWdtEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r17369 r17394 522 522 case StressTensoryzEnum : return "StressTensoryz"; 523 523 case StressTensorzzEnum : return "StressTensorzz"; 524 case DivergenceEnum : return "Divergence"; 524 525 case GiaCrossSectionShapeEnum : return "GiaCrossSectionShape"; 525 526 case GiadWdtEnum : return "GiadWdt"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r17369 r17394 534 534 else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum; 535 535 else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum; 536 else if (strcmp(name,"Divergence")==0) return DivergenceEnum; 536 537 else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum; 537 538 else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum; … … 628 629 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 629 630 else if (strcmp(name,"Regular")==0) return RegularEnum; 630 else if (strcmp(name,"Scaled")==0) return ScaledEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"Separate")==0) return SeparateEnum; 634 if (strcmp(name,"Scaled")==0) return ScaledEnum; 635 else if (strcmp(name,"Separate")==0) return SeparateEnum; 635 636 else if (strcmp(name,"Sset")==0) return SsetEnum; 636 637 else if (strcmp(name,"Verbose")==0) return VerboseEnum;
Note:
See TracChangeset
for help on using the changeset viewer.