Changeset 22326
- Timestamp:
- 01/04/18 10:54:01 (7 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.cpp ¶
r22308 r22326 861 861 this->parameters->FindParam(pvalues,psize,paramenum); 862 862 }/*}}}*/ 863 IssmDouble Element::FloatingArea(IssmDouble* mask ){/*{{{*/863 IssmDouble Element::FloatingArea(IssmDouble* mask, bool scaled){/*{{{*/ 864 864 865 865 /*Retrieve values of the mask defining the element: */ … … 871 871 872 872 /*Return: */ 873 return this->FloatingArea( );873 return this->FloatingArea(scaled); 874 874 } 875 875 /*}}}*/ … … 1404 1404 } 1405 1405 /*}}}*/ 1406 IssmDouble Element::GroundedArea(IssmDouble* mask ){/*{{{*/1406 IssmDouble Element::GroundedArea(IssmDouble* mask, bool scaled){/*{{{*/ 1407 1407 1408 1408 /*Retrieve values of the mask defining the element: */ … … 1414 1414 1415 1415 /*Return: */ 1416 return this->GroundedArea( );1416 return this->GroundedArea(scaled); 1417 1417 } 1418 1418 /*}}}*/ … … 1423 1423 return (this->inputs->Max(MeshVertexonsurfaceEnum)>0.); 1424 1424 }/*}}}*/ 1425 IssmDouble Element::IceMass( void){/*{{{*/1425 IssmDouble Element::IceMass(bool scaled){/*{{{*/ 1426 1426 1427 1427 IssmDouble rho_ice; … … 1432 1432 rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum); 1433 1433 1434 return rho_ice*this->IceVolume( );1435 } 1436 /*}}}*/ 1437 IssmDouble Element::IceMass(IssmDouble* mask ){/*{{{*/1434 return rho_ice*this->IceVolume(scaled); 1435 } 1436 /*}}}*/ 1437 IssmDouble Element::IceMass(IssmDouble* mask, bool scaled){/*{{{*/ 1438 1438 1439 1439 /*Retrieve values of the mask defining the element: */ … … 1445 1445 1446 1446 /*Return: */ 1447 return this->IceMass( );1448 } 1449 /*}}}*/ 1450 IssmDouble Element::IceVolume(IssmDouble* mask ){/*{{{*/1447 return this->IceMass(scaled); 1448 } 1449 /*}}}*/ 1450 IssmDouble Element::IceVolume(IssmDouble* mask, bool scaled){/*{{{*/ 1451 1451 1452 1452 /*Retrieve values of the mask defining the element: */ … … 1458 1458 1459 1459 /*Return: */ 1460 return this->IceVolume( );1461 } 1462 /*}}}*/ 1463 IssmDouble Element::IceVolumeAboveFloatation(IssmDouble* mask ){/*{{{*/1460 return this->IceVolume(scaled); 1461 } 1462 /*}}}*/ 1463 IssmDouble Element::IceVolumeAboveFloatation(IssmDouble* mask, bool scaled){/*{{{*/ 1464 1464 1465 1465 /*Retrieve values of the mask defining the element: */ … … 1471 1471 1472 1472 /*Return: */ 1473 return this->IceVolumeAboveFloatation( );1473 return this->IceVolumeAboveFloatation(scaled); 1474 1474 } 1475 1475 /*}}}*/ … … 3137 3137 return this->matpar->TMeltingPoint(pressure); 3138 3138 }/*}}}*/ 3139 IssmDouble Element::TotalFloatingBmb(IssmDouble* mask ){/*{{{*/3139 IssmDouble Element::TotalFloatingBmb(IssmDouble* mask, bool scaled){/*{{{*/ 3140 3140 3141 3141 /*Retrieve values of the mask defining the element: */ … … 3147 3147 3148 3148 /*Return: */ 3149 return this->TotalFloatingBmb( );3150 } 3151 /*}}}*/ 3152 IssmDouble Element::TotalGroundedBmb(IssmDouble* mask ){/*{{{*/3149 return this->TotalFloatingBmb(scaled); 3150 } 3151 /*}}}*/ 3152 IssmDouble Element::TotalGroundedBmb(IssmDouble* mask, bool scaled){/*{{{*/ 3153 3153 3154 3154 /*Retrieve values of the mask defining the element: */ … … 3160 3160 3161 3161 /*Return: */ 3162 return this->TotalGroundedBmb( );3163 } 3164 /*}}}*/ 3165 IssmDouble Element::TotalSmb(IssmDouble* mask ){/*{{{*/3162 return this->TotalGroundedBmb(scaled); 3163 } 3164 /*}}}*/ 3165 IssmDouble Element::TotalSmb(IssmDouble* mask, bool scaled){/*{{{*/ 3166 3166 3167 3167 /*Retrieve values of the mask defining the element: */ … … 3173 3173 3174 3174 /*Return: */ 3175 return this->TotalSmb( );3175 return this->TotalSmb(scaled); 3176 3176 } 3177 3177 /*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.h ¶
r22192 r22326 81 81 void FindParam(IssmDouble* pvalue,int paramenum); 82 82 void FindParam(int** pvalues,int* psize,int paramenum); 83 IssmDouble FloatingArea(IssmDouble* mask );83 IssmDouble FloatingArea(IssmDouble* mask, bool scaled); 84 84 void GetDofList(int** pdoflist,int approximation_enum,int setenum); 85 85 void GetDofListPressure(int** pdoflist,int setenum); … … 112 112 IssmDouble GetZcoord(IssmDouble* xyz_list,Gauss* gauss); 113 113 void GradientIndexing(int* indexing,int control_index,bool onsid=false); 114 IssmDouble GroundedArea(IssmDouble* mask );114 IssmDouble GroundedArea(IssmDouble* mask, bool scaled); 115 115 bool HasNodeOnBase(); 116 116 bool HasNodeOnSurface(); 117 IssmDouble IceMass( );118 IssmDouble IceMass(IssmDouble* mask );119 IssmDouble IceVolume(IssmDouble* mask );120 IssmDouble IceVolumeAboveFloatation(IssmDouble* mask );117 IssmDouble IceMass(bool scaled); 118 IssmDouble IceMass(IssmDouble* mask, bool scaled); 119 IssmDouble IceVolume(IssmDouble* mask, bool scaled); 120 IssmDouble IceVolumeAboveFloatation(IssmDouble* mask, bool scaled); 121 121 int Id(); 122 122 void InputChangeName(int enum_type,int enum_type_old); … … 158 158 void ThermalToEnthalpy(IssmDouble* penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure); 159 159 IssmDouble TMeltingPoint(IssmDouble pressure); 160 IssmDouble TotalFloatingBmb(IssmDouble* mask );161 IssmDouble TotalGroundedBmb(IssmDouble* mask );162 IssmDouble TotalSmb(IssmDouble* mask );160 IssmDouble TotalFloatingBmb(IssmDouble* mask, bool scaled); 161 IssmDouble TotalGroundedBmb(IssmDouble* mask, bool scaled); 162 IssmDouble TotalSmb(IssmDouble* mask, bool scaled); 163 163 void TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,int cs_enum); 164 164 void TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum); … … 203 203 virtual void ElementSizes(IssmDouble* phx,IssmDouble* phy,IssmDouble* phz)=0; 204 204 virtual int FiniteElement(void)=0; 205 virtual IssmDouble FloatingArea( void)=0;205 virtual IssmDouble FloatingArea(bool scaled)=0; 206 206 virtual void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating)=0; 207 207 virtual Element* GetBasalElement(void)=0; … … 221 221 virtual void GetVerticesCoordinatesBase(IssmDouble** xyz_list)=0; 222 222 virtual void GetVerticesCoordinatesTop(IssmDouble** xyz_list)=0; 223 virtual IssmDouble GroundedArea( void)=0;224 virtual IssmDouble IceVolume( void)=0;225 virtual IssmDouble IceVolumeAboveFloatation( void)=0;223 virtual IssmDouble GroundedArea(bool scaled)=0; 224 virtual IssmDouble IceVolume(bool scaled)=0; 225 virtual IssmDouble IceVolumeAboveFloatation(bool scaled)=0; 226 226 virtual void InputDepthAverageAtBase(int enum_type,int average_enum_type)=0; 227 227 virtual void InputExtrude(int input_enum,int start)=0; … … 289 289 virtual int TensorInterpolation()=0; 290 290 virtual IssmDouble TimeAdapt()=0; 291 virtual IssmDouble TotalFloatingBmb( void)=0;292 virtual IssmDouble TotalGroundedBmb( void)=0;293 virtual IssmDouble TotalSmb( void)=0;291 virtual IssmDouble TotalFloatingBmb(bool scaled)=0; 292 virtual IssmDouble TotalGroundedBmb(bool scaled)=0; 293 virtual IssmDouble TotalSmb(bool scaled)=0; 294 294 virtual void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0; 295 295 virtual void UpdateConstraintsExtrudeFromBase(void)=0; -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.cpp ¶
r22308 r22326 686 686 } 687 687 /*}}}*/ 688 IssmDouble Penta::FloatingArea( void){/*{{{*/688 IssmDouble Penta::FloatingArea(bool scaled){/*{{{*/ 689 689 690 690 /*Intermediaries*/ … … 1160 1160 1161 1161 }/*}}}*/ 1162 IssmDouble Penta::GroundedArea( void){/*{{{*/1162 IssmDouble Penta::GroundedArea(bool scaled){/*{{{*/ 1163 1163 1164 1164 /*Intermediaries*/ … … 1181 1181 } 1182 1182 /*}}}*/ 1183 IssmDouble Penta::IceVolume( void){/*{{{*/1183 IssmDouble Penta::IceVolume(bool scaled){/*{{{*/ 1184 1184 1185 1185 /*The volume of a troncated prism is base * 1/3 sum(length of edges)*/ … … 1203 1203 } 1204 1204 /*}}}*/ 1205 IssmDouble Penta::IceVolumeAboveFloatation( void){/*{{{*/1205 IssmDouble Penta::IceVolumeAboveFloatation(bool scaled){/*{{{*/ 1206 1206 1207 1207 /*Volume above floatation: H + rho_water/rho_ice*bathymetry for nodes on the bed*/ … … 2633 2633 return dt; 2634 2634 }/*}}}*/ 2635 IssmDouble Penta::TotalFloatingBmb( void){/*{{{*/2635 IssmDouble Penta::TotalFloatingBmb(bool scaled){/*{{{*/ 2636 2636 2637 2637 /*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/ … … 2670 2670 } 2671 2671 /*}}}*/ 2672 IssmDouble Penta::TotalGroundedBmb( void){/*{{{*/2672 IssmDouble Penta::TotalGroundedBmb(bool scaled){/*{{{*/ 2673 2673 2674 2674 /*The gbmb[kg yr-1] of one element is area[m2] * gounded melting rate [kg m^-2 yr^-1]*/ … … 2707 2707 } 2708 2708 /*}}}*/ 2709 IssmDouble Penta::TotalSmb( void){/*{{{*/2709 IssmDouble Penta::TotalSmb(bool scaled){/*{{{*/ 2710 2710 2711 2711 /*The smb[Gt yr-1] of one element is area[m2] * smb [ m ice yr^-1] * rho_ice [kg m-3] / 1e+10^12 */ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.h ¶
r22192 r22326 64 64 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); 65 65 int FiniteElement(void); 66 IssmDouble FloatingArea( void);66 IssmDouble FloatingArea(bool scaled); 67 67 void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating); 68 68 IssmDouble GetArea3D(void){_error_("not implemented yet!");}; … … 88 88 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); 89 89 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); 90 IssmDouble GroundedArea( void);91 IssmDouble IceVolume( void);92 IssmDouble IceVolumeAboveFloatation( void);90 IssmDouble GroundedArea(bool scaled); 91 IssmDouble IceVolume(bool scaled); 92 IssmDouble IceVolumeAboveFloatation(bool scaled); 93 93 void InputDepthAverageAtBase(int enum_type,int average_enum_type); 94 94 void InputExtrude(int enum_type,int start); … … 159 159 int TensorInterpolation(){_error_("not implemented yet");}; 160 160 IssmDouble TimeAdapt(); 161 IssmDouble TotalFloatingBmb( void);162 IssmDouble TotalGroundedBmb( void);163 IssmDouble TotalSmb( void);161 IssmDouble TotalFloatingBmb(bool scaled); 162 IssmDouble TotalGroundedBmb(bool scaled); 163 IssmDouble TotalSmb(bool scaled); 164 164 void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement); 165 165 void UpdateConstraintsExtrudeFromBase(void); -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Seg.h ¶
r21931 r22326 57 57 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){_error_("not implemented yet");}; 58 58 int FiniteElement(void); 59 IssmDouble FloatingArea( void){_error_("not implemented yet");};59 IssmDouble FloatingArea(bool scaled){_error_("not implemented yet");}; 60 60 void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");}; 61 61 Element* GetBasalElement(void){_error_("not implemented yet");}; … … 76 76 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list){_error_("not implemented yet");}; 77 77 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list){_error_("not implemented yet");}; 78 IssmDouble GroundedArea( void){_error_("not implemented yet");};79 IssmDouble IceVolume( void){_error_("not implemented yet");};80 IssmDouble IceVolumeAboveFloatation( void){_error_("not implemented yet");};78 IssmDouble GroundedArea(bool scaled){_error_("not implemented yet");}; 79 IssmDouble IceVolume(bool scaled){_error_("not implemented yet");}; 80 IssmDouble IceVolumeAboveFloatation(bool scaled){_error_("not implemented yet");}; 81 81 void InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");}; 82 82 void InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/}; … … 145 145 int TensorInterpolation(void){_error_("not implemented yet");}; 146 146 IssmDouble TimeAdapt(){_error_("not implemented yet");}; 147 IssmDouble TotalFloatingBmb( void){_error_("not implemented yet");};148 IssmDouble TotalGroundedBmb( void){_error_("not implemented yet");};149 IssmDouble TotalSmb( void){_error_("not implemented yet");};147 IssmDouble TotalFloatingBmb(bool scaled){_error_("not implemented yet");}; 148 IssmDouble TotalGroundedBmb(bool scaled){_error_("not implemented yet");}; 149 IssmDouble TotalSmb(bool scaled){_error_("not implemented yet");}; 150 150 void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement){_error_("not implemented yet");}; 151 151 void UpdateConstraintsExtrudeFromBase(){_error_("not implemented");}; -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tetra.h ¶
r21931 r22326 61 61 void FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3); 62 62 int FiniteElement(void); 63 IssmDouble FloatingArea( void){_error_("not implemented yet");};63 IssmDouble FloatingArea(bool scaled){_error_("not implemented yet");}; 64 64 void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");}; 65 65 IssmDouble GetArea3D(void){_error_("not implemented yet!");}; … … 82 82 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); 83 83 void GradientIndexing(int* indexing,int control_index){_error_("not implemented yet");}; 84 IssmDouble GroundedArea( void){_error_("not implemented yet");};84 IssmDouble GroundedArea(bool scaled){_error_("not implemented yet");}; 85 85 bool HasFaceOnBase(); 86 86 bool HasFaceOnSurface(); 87 IssmDouble IceVolume( void){_error_("not implemented yet");};88 IssmDouble IceVolumeAboveFloatation( void){_error_("not implemented yet");};87 IssmDouble IceVolume(bool scaled){_error_("not implemented yet");}; 88 IssmDouble IceVolumeAboveFloatation(bool scaled){_error_("not implemented yet");}; 89 89 bool IsFaceOnBoundary(void){_error_("not implemented yet");}; 90 90 bool IsIcefront(void); … … 154 154 int TensorInterpolation(void); 155 155 IssmDouble TimeAdapt(){_error_("not implemented yet");}; 156 IssmDouble TotalFloatingBmb( void){_error_("not implemented yet");};157 IssmDouble TotalGroundedBmb( void){_error_("not implemented yet");};158 IssmDouble TotalSmb( void){_error_("not implemented yet");};156 IssmDouble TotalFloatingBmb(bool scaled){_error_("not implemented yet");}; 157 IssmDouble TotalGroundedBmb(bool scaled){_error_("not implemented yet");}; 158 IssmDouble TotalSmb(bool scaled){_error_("not implemented yet");}; 159 159 void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement); 160 160 void UpdateConstraintsExtrudeFromBase(){_error_("not implemented");}; -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.cpp ¶
r22308 r22326 890 890 } 891 891 /*}}}*/ 892 IssmDouble Tria::FloatingArea( void){/*{{{*/892 IssmDouble Tria::FloatingArea(bool scaled){/*{{{*/ 893 893 894 894 /*Intermediaries*/ … … 1610 1610 1611 1611 }/*}}}*/ 1612 IssmDouble Tria::GroundedArea( void){/*{{{*/1612 IssmDouble Tria::GroundedArea(bool scaled){/*{{{*/ 1613 1613 1614 1614 /*Intermediaries*/ … … 1673 1673 } 1674 1674 /*}}}*/ 1675 IssmDouble Tria::IceVolume( void){/*{{{*/1675 IssmDouble Tria::IceVolume(bool scaled){/*{{{*/ 1676 1676 1677 1677 /*The volume of a truncated prism is area_base * 1/numedges sum(length of edges)*/ … … 1744 1744 } 1745 1745 /*}}}*/ 1746 IssmDouble Tria::IceVolumeAboveFloatation( void){/*{{{*/1746 IssmDouble Tria::IceVolumeAboveFloatation(bool scaled){/*{{{*/ 1747 1747 1748 1748 /*The volume above floatation: H + rho_water/rho_ice * bathymetry */ … … 3115 3115 } 3116 3116 /*}}}*/ 3117 IssmDouble Tria::TotalFloatingBmb( void){/*{{{*/3117 IssmDouble Tria::TotalFloatingBmb(bool scaled){/*{{{*/ 3118 3118 3119 3119 /*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/ … … 3152 3152 } 3153 3153 /*}}}*/ 3154 IssmDouble Tria::TotalGroundedBmb( void){/*{{{*/3154 IssmDouble Tria::TotalGroundedBmb(bool scaled){/*{{{*/ 3155 3155 3156 3156 /*The gbmb[kg yr-1] of one element is area[m2] * gounded melting rate [kg m^-2 yr^-1]*/ … … 3189 3189 } 3190 3190 /*}}}*/ 3191 IssmDouble Tria::TotalSmb( void){/*{{{*/3191 IssmDouble Tria::TotalSmb(bool scaled){/*{{{*/ 3192 3192 3193 3193 /*The smb[kg yr-1] of one element is area[m2] * smb [kg m^-2 yr^-1]*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.h ¶
r22192 r22326 72 72 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); 73 73 int FiniteElement(void); 74 IssmDouble FloatingArea( void);74 IssmDouble FloatingArea(bool scaled); 75 75 void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating); 76 76 Element* GetBasalElement(void){_error_("not implemented yet");}; … … 87 87 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); 88 88 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); 89 IssmDouble GroundedArea( void);89 IssmDouble GroundedArea(bool scaled); 90 90 bool HasEdgeOnBase(); 91 91 bool HasEdgeOnSurface(); 92 IssmDouble IceVolume( void);93 IssmDouble IceVolumeAboveFloatation( void);92 IssmDouble IceVolume(bool scaled); 93 IssmDouble IceVolumeAboveFloatation(bool scaled); 94 94 void InputDepthAverageAtBase(int enum_type,int average_enum_type); 95 95 void InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/}; … … 125 125 int TensorInterpolation(); 126 126 IssmDouble TimeAdapt(); 127 IssmDouble TotalFloatingBmb( void);128 IssmDouble TotalGroundedBmb( void);129 IssmDouble TotalSmb( void);127 IssmDouble TotalFloatingBmb(bool scaled); 128 IssmDouble TotalGroundedBmb(bool scaled); 129 IssmDouble TotalSmb(bool scaled); 130 130 void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement); 131 131 int UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf); -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.cpp ¶
r22294 r22326 1042 1042 1043 1043 }/*}}}*/ 1044 void FemModel::FloatingAreax(IssmDouble* pV ){/*{{{*/1044 void FemModel::FloatingAreax(IssmDouble* pV, bool scaled){/*{{{*/ 1045 1045 1046 1046 IssmDouble local_floating_area= 0; … … 1049 1049 for(int i=0;i<this->elements->Size();i++){ 1050 1050 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 1051 local_floating_area+=element->FloatingArea( );1051 local_floating_area+=element->FloatingArea(scaled); 1052 1052 } 1053 1053 ISSM_MPI_Reduce(&local_floating_area,&total_floating_area,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); … … 1091 1091 1092 1092 }/*}}}*/ 1093 void FemModel::GroundedAreax(IssmDouble* pV ){/*{{{*/1093 void FemModel::GroundedAreax(IssmDouble* pV, bool scaled){/*{{{*/ 1094 1094 1095 1095 IssmDouble local_grounded_area= 0; … … 1098 1098 for(int i=0;i<this->elements->Size();i++){ 1099 1099 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 1100 local_grounded_area+=element->GroundedArea( );1100 local_grounded_area+=element->GroundedArea(scaled); 1101 1101 } 1102 1102 ISSM_MPI_Reduce(&local_grounded_area,&total_grounded_area,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); … … 1107 1107 1108 1108 }/*}}}*/ 1109 void FemModel::IceMassx(IssmDouble* pM ){/*{{{*/1109 void FemModel::IceMassx(IssmDouble* pM, bool scaled){/*{{{*/ 1110 1110 1111 1111 IssmDouble local_ice_mass = 0; … … 1114 1114 for(int i=0;i<this->elements->Size();i++){ 1115 1115 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 1116 local_ice_mass+=element->IceMass( );1116 local_ice_mass+=element->IceMass(scaled); 1117 1117 } 1118 1118 ISSM_MPI_Reduce(&local_ice_mass,&total_ice_mass,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); … … 1123 1123 1124 1124 }/*}}}*/ 1125 void FemModel::IceVolumeAboveFloatationx(IssmDouble* pV ){/*{{{*/1125 void FemModel::IceVolumeAboveFloatationx(IssmDouble* pV, bool scaled){/*{{{*/ 1126 1126 1127 1127 IssmDouble local_ice_volume_af = 0; … … 1130 1130 for(int i=0;i<this->elements->Size();i++){ 1131 1131 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 1132 local_ice_volume_af+=element->IceVolumeAboveFloatation( );1132 local_ice_volume_af+=element->IceVolumeAboveFloatation(scaled); 1133 1133 } 1134 1134 ISSM_MPI_Reduce(&local_ice_volume_af,&total_ice_volume_af,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); … … 1139 1139 1140 1140 }/*}}}*/ 1141 void FemModel::IceVolumex(IssmDouble* pV ){/*{{{*/1141 void FemModel::IceVolumex(IssmDouble* pV, bool scaled){/*{{{*/ 1142 1142 1143 1143 IssmDouble local_ice_volume = 0; … … 1146 1146 for(int i=0;i<this->elements->Size();i++){ 1147 1147 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 1148 local_ice_volume+=element->IceVolume( );1148 local_ice_volume+=element->IceVolume(scaled); 1149 1149 } 1150 1150 ISSM_MPI_Reduce(&local_ice_volume,&total_ice_volume,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); … … 1744 1744 1745 1745 /*Scalar output*/ 1746 case DivergenceEnum: this->Divergencex(&double_result); break; 1747 case MaxDivergenceEnum: this->MaxDivergencex(&double_result); break; 1748 case IceMassEnum: this->IceMassx(&double_result); break; 1749 case IceVolumeEnum: this->IceVolumex(&double_result); break; 1750 case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(&double_result); break; 1751 case GroundedAreaEnum: this->GroundedAreax(&double_result); break; 1752 case FloatingAreaEnum: this->FloatingAreax(&double_result); break; 1753 case MinVelEnum: this->MinVelx(&double_result); break; 1754 case MaxVelEnum: this->MaxVelx(&double_result); break; 1755 case MinVxEnum: this->MinVxx(&double_result); break; 1756 case MaxVxEnum: this->MaxVxx(&double_result); break; 1757 case MaxAbsVxEnum: this->MaxAbsVxx(&double_result); break; 1758 case MinVyEnum: this->MinVyx(&double_result); break; 1759 case MaxVyEnum: this->MaxVyx(&double_result); break; 1760 case MaxAbsVyEnum: this->MaxAbsVyx(&double_result); break; 1761 case MinVzEnum: this->MinVzx(&double_result); break; 1762 case MaxVzEnum: this->MaxVzx(&double_result); break; 1763 case MaxAbsVzEnum: this->MaxAbsVzx(&double_result); break; 1764 case MassFluxEnum: this->MassFluxx(&double_result); break; 1765 case TotalFloatingBmbEnum: this->TotalFloatingBmbx(&double_result); break; 1766 case TotalGroundedBmbEnum: this->TotalGroundedBmbx(&double_result); break; 1767 case TotalSmbEnum: this->TotalSmbx(&double_result); break; 1746 case DivergenceEnum: this->Divergencex(&double_result); break; 1747 case MaxDivergenceEnum: this->MaxDivergencex(&double_result); break; 1748 case IceMassEnum: this->IceMassx(&double_result,false); break; 1749 case IceMassScaledEnum: this->IceMassx(&double_result,true); break; 1750 case IceVolumeEnum: this->IceVolumex(&double_result,false); break; 1751 case IceVolumeScaledEnum: this->IceVolumex(&double_result,true); break; 1752 case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(&double_result,false); break; 1753 case IceVolumeAboveFloatationScaledEnum: this->IceVolumeAboveFloatationx(&double_result,true); break; 1754 case GroundedAreaEnum: this->GroundedAreax(&double_result,false); break; 1755 case GroundedAreaScaledEnum: this->GroundedAreax(&double_result,true); break; 1756 case FloatingAreaEnum: this->FloatingAreax(&double_result,false); break; 1757 case FloatingAreaScaledEnum: this->FloatingAreax(&double_result,true); break; 1758 case MinVelEnum: this->MinVelx(&double_result); break; 1759 case MaxVelEnum: this->MaxVelx(&double_result); break; 1760 case MinVxEnum: this->MinVxx(&double_result); break; 1761 case MaxVxEnum: this->MaxVxx(&double_result); break; 1762 case MaxAbsVxEnum: this->MaxAbsVxx(&double_result); break; 1763 case MinVyEnum: this->MinVyx(&double_result); break; 1764 case MaxVyEnum: this->MaxVyx(&double_result); break; 1765 case MaxAbsVyEnum: this->MaxAbsVyx(&double_result); break; 1766 case MinVzEnum: this->MinVzx(&double_result); break; 1767 case MaxVzEnum: this->MaxVzx(&double_result); break; 1768 case MaxAbsVzEnum: this->MaxAbsVzx(&double_result); break; 1769 case MassFluxEnum: this->MassFluxx(&double_result); break; 1770 case TotalFloatingBmbEnum: this->TotalFloatingBmbx(&double_result,false); break; 1771 case TotalFloatingBmbScaledEnum: this->TotalFloatingBmbx(&double_result,true); break; 1772 case TotalGroundedBmbEnum: this->TotalGroundedBmbx(&double_result,false); break; 1773 case TotalGroundedBmbScaledEnum: this->TotalGroundedBmbx(&double_result,true); break; 1774 case TotalSmbEnum: this->TotalSmbx(&double_result,false); break; 1775 case TotalSmbScaledEnum: this->TotalSmbx(&double_result,true); break; 1768 1776 1769 1777 /*Scalar control output*/ … … 1994 2002 switch (response_descriptor_enum){ 1995 2003 1996 case DivergenceEnum: this->Divergencex(responses); break; 1997 case MaxDivergenceEnum: this->MaxDivergencex(responses); break; 1998 case IceMassEnum: this->IceMassx(responses); break; 1999 case IceVolumeEnum: this->IceVolumex(responses); break; 2000 case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(responses); break; 2001 case GroundedAreaEnum: this->GroundedAreax(responses); break; 2002 case FloatingAreaEnum: this->FloatingAreax(responses); break; 2003 case MinVelEnum: this->MinVelx(responses); break; 2004 case MaxVelEnum: this->MaxVelx(responses); break; 2005 case MinVxEnum: this->MinVxx(responses); break; 2006 case MaxVxEnum: this->MaxVxx(responses); break; 2007 case MaxAbsVxEnum: this->MaxAbsVxx(responses); break; 2008 case MinVyEnum: this->MinVyx(responses); break; 2009 case MaxVyEnum: this->MaxVyx(responses); break; 2010 case MaxAbsVyEnum: this->MaxAbsVyx(responses); break; 2011 case MinVzEnum: this->MinVzx(responses); break; 2012 case MaxVzEnum: this->MaxVzx(responses); break; 2013 case MaxAbsVzEnum: this->MaxAbsVzx(responses); break; 2014 case MassFluxEnum: this->MassFluxx(responses); break; 2015 case SurfaceAbsVelMisfitEnum: SurfaceAbsVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break; 2016 case SurfaceRelVelMisfitEnum: SurfaceRelVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break; 2017 case SurfaceLogVelMisfitEnum: SurfaceLogVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break; 2018 case SurfaceLogVxVyMisfitEnum: SurfaceLogVxVyMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break; 2019 case SurfaceAverageVelMisfitEnum: SurfaceAverageVelMisfitx(responses,this); break; 2020 case ThicknessAbsMisfitEnum: ThicknessAbsMisfitx(responses, elements,nodes, vertices, loads, materials, parameters); break; 2021 case ThicknessAbsGradientEnum: this->ThicknessAbsGradientx(responses); break; 2022 case ThicknessAlongGradientEnum: ThicknessAlongGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break; 2023 case ThicknessAcrossGradientEnum: ThicknessAcrossGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break; 2024 case RheologyBbarAbsGradientEnum: RheologyBbarAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break; 2025 case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break; 2026 case BalancethicknessMisfitEnum: BalancethicknessMisfitx(responses); break; 2027 case TotalFloatingBmbEnum: this->TotalFloatingBmbx(responses); break; 2028 case TotalGroundedBmbEnum: this->TotalGroundedBmbx(responses); break; 2029 case TotalSmbEnum: this->TotalSmbx(responses); break; 2030 case MaterialsRheologyBbarEnum: this->ElementResponsex(responses,MaterialsRheologyBbarEnum); break; 2031 case VelEnum: this->ElementResponsex(responses,VelEnum); break; 2032 case FrictionCoefficientEnum: NodalValuex(responses, FrictionCoefficientEnum,elements,nodes, vertices, loads, materials, parameters); break; 2004 case DivergenceEnum: this->Divergencex(responses); break; 2005 case MaxDivergenceEnum: this->MaxDivergencex(responses); break; 2006 case IceMassEnum: this->IceMassx(responses, false); break; 2007 case IceMassScaledEnum: this->IceMassx(responses, true); break; 2008 case IceVolumeEnum: this->IceVolumex(responses, false); break; 2009 case IceVolumeScaledEnum: this->IceVolumex(responses, true); break; 2010 case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(responses, false); break; 2011 case IceVolumeAboveFloatationScaledEnum: this->IceVolumeAboveFloatationx(responses, true); break; 2012 case GroundedAreaEnum: this->GroundedAreax(responses, false); break; 2013 case GroundedAreaScaledEnum: this->GroundedAreax(responses, true); break; 2014 case FloatingAreaEnum: this->FloatingAreax(responses, false); break; 2015 case FloatingAreaScaledEnum: this->FloatingAreax(responses, true); break; 2016 case MinVelEnum: this->MinVelx(responses); break; 2017 case MaxVelEnum: this->MaxVelx(responses); break; 2018 case MinVxEnum: this->MinVxx(responses); break; 2019 case MaxVxEnum: this->MaxVxx(responses); break; 2020 case MaxAbsVxEnum: this->MaxAbsVxx(responses); break; 2021 case MinVyEnum: this->MinVyx(responses); break; 2022 case MaxVyEnum: this->MaxVyx(responses); break; 2023 case MaxAbsVyEnum: this->MaxAbsVyx(responses); break; 2024 case MinVzEnum: this->MinVzx(responses); break; 2025 case MaxVzEnum: this->MaxVzx(responses); break; 2026 case MaxAbsVzEnum: this->MaxAbsVzx(responses); break; 2027 case MassFluxEnum: this->MassFluxx(responses); break; 2028 case SurfaceAbsVelMisfitEnum: SurfaceAbsVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break; 2029 case SurfaceRelVelMisfitEnum: SurfaceRelVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break; 2030 case SurfaceLogVelMisfitEnum: SurfaceLogVelMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break; 2031 case SurfaceLogVxVyMisfitEnum: SurfaceLogVxVyMisfitx(responses, elements,nodes, vertices, loads, materials,parameters); break; 2032 case SurfaceAverageVelMisfitEnum: SurfaceAverageVelMisfitx(responses,this); break; 2033 case ThicknessAbsMisfitEnum: ThicknessAbsMisfitx(responses, elements,nodes, vertices, loads, materials, parameters); break; 2034 case ThicknessAbsGradientEnum: this->ThicknessAbsGradientx(responses); break; 2035 case ThicknessAlongGradientEnum: ThicknessAlongGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break; 2036 case ThicknessAcrossGradientEnum: ThicknessAcrossGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break; 2037 case RheologyBbarAbsGradientEnum: RheologyBbarAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break; 2038 case DragCoefficientAbsGradientEnum: DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break; 2039 case BalancethicknessMisfitEnum: BalancethicknessMisfitx(responses); break; 2040 case TotalFloatingBmbEnum: this->TotalFloatingBmbx(responses, false); break; 2041 case TotalFloatingBmbScaledEnum: this->TotalFloatingBmbx(responses, true); break; 2042 case TotalGroundedBmbEnum: this->TotalGroundedBmbx(responses, false); break; 2043 case TotalGroundedBmbScaledEnum: this->TotalGroundedBmbx(responses, true); break; 2044 case TotalSmbEnum: this->TotalSmbx(responses, false); break; 2045 case TotalSmbScaledEnum: this->TotalSmbx(responses, true); break; 2046 case MaterialsRheologyBbarEnum: this->ElementResponsex(responses,MaterialsRheologyBbarEnum); break; 2047 case VelEnum: this->ElementResponsex(responses,VelEnum); break; 2048 case FrictionCoefficientEnum: NodalValuex(responses, FrictionCoefficientEnum,elements,nodes, vertices, loads, materials, parameters); break; 2033 2049 default: 2034 2050 if(response_descriptor_enum>=Outputdefinition1Enum && response_descriptor_enum <=Outputdefinition100Enum){ … … 2278 2294 } 2279 2295 /*}}}*/ 2280 void FemModel::TotalFloatingBmbx(IssmDouble* pFbmb ){/*{{{*/2296 void FemModel::TotalFloatingBmbx(IssmDouble* pFbmb, bool scaled){/*{{{*/ 2281 2297 2282 2298 IssmDouble local_fbmb = 0; … … 2285 2301 for(int i=0;i<this->elements->Size();i++){ 2286 2302 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 2287 local_fbmb+=element->TotalFloatingBmb( );2303 local_fbmb+=element->TotalFloatingBmb(scaled); 2288 2304 } 2289 2305 ISSM_MPI_Reduce(&local_fbmb,&total_fbmb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); … … 2294 2310 2295 2311 }/*}}}*/ 2296 void FemModel::TotalGroundedBmbx(IssmDouble* pGbmb ){/*{{{*/2312 void FemModel::TotalGroundedBmbx(IssmDouble* pGbmb, bool scaled){/*{{{*/ 2297 2313 2298 2314 IssmDouble local_gbmb = 0; … … 2301 2317 for(int i=0;i<this->elements->Size();i++){ 2302 2318 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 2303 local_gbmb+=element->TotalGroundedBmb( );2319 local_gbmb+=element->TotalGroundedBmb(scaled); 2304 2320 } 2305 2321 ISSM_MPI_Reduce(&local_gbmb,&total_gbmb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); … … 2310 2326 2311 2327 }/*}}}*/ 2312 void FemModel::TotalSmbx(IssmDouble* pSmb ){/*{{{*/2328 void FemModel::TotalSmbx(IssmDouble* pSmb, bool scaled){/*{{{*/ 2313 2329 2314 2330 IssmDouble local_smb = 0; … … 2317 2333 for(int i=0;i<this->elements->Size();i++){ 2318 2334 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 2319 local_smb+=element->TotalSmb( );2335 local_smb+=element->TotalSmb(scaled); 2320 2336 } 2321 2337 ISSM_MPI_Reduce(&local_smb,&total_smb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.h ¶
r22285 r22326 88 88 void ElementOperationx(void (Element::*function)(void)); 89 89 void ElementResponsex(IssmDouble* presponse,int response_enum); 90 void FloatingAreax(IssmDouble* pV );90 void FloatingAreax(IssmDouble* pV, bool scaled); 91 91 void GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,IssmDouble* ug); 92 void GroundedAreax(IssmDouble* pV );93 void IceMassx(IssmDouble* pV );94 void IceVolumex(IssmDouble* pV );95 void IceVolumeAboveFloatationx(IssmDouble* pV );92 void GroundedAreax(IssmDouble* pV, bool scaled); 93 void IceMassx(IssmDouble* pV, bool scaled); 94 void IceVolumex(IssmDouble* pV, bool scaled); 95 void IceVolumeAboveFloatationx(IssmDouble* pV, bool scaled); 96 96 void MassFluxx(IssmDouble* presponse); 97 97 void MaxAbsVxx(IssmDouble* presponse); … … 112 112 void StrainRateeffectivex(); 113 113 void StressIntensityFactorx(); 114 void TotalFloatingBmbx(IssmDouble* pFbmb );115 void TotalGroundedBmbx(IssmDouble* pGbmb );116 void TotalSmbx(IssmDouble* pSmb );114 void TotalFloatingBmbx(IssmDouble* pFbmb, bool scaled); 115 void TotalGroundedBmbx(IssmDouble* pGbmb, bool scaled); 116 void TotalSmbx(IssmDouble* pSmb, bool scaled); 117 117 #ifdef _HAVE_DAKOTA_ 118 118 void DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses); -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h ¶
r22323 r22326 1077 1077 MaxAbsVzEnum, 1078 1078 FloatingAreaEnum, 1079 FloatingAreaScaledEnum, 1079 1080 GroundedAreaEnum, 1081 GroundedAreaScaledEnum, 1080 1082 IceMassEnum, 1083 IceMassScaledEnum, 1081 1084 IceVolumeEnum, 1085 IceVolumeScaledEnum, 1082 1086 IceVolumeAboveFloatationEnum, 1087 IceVolumeAboveFloatationScaledEnum, 1083 1088 TotalFloatingBmbEnum, 1089 TotalFloatingBmbScaledEnum, 1084 1090 TotalGroundedBmbEnum, 1091 TotalGroundedBmbScaledEnum, 1085 1092 TotalSmbEnum, 1093 TotalSmbScaledEnum, 1086 1094 /*}}}*/ 1087 1095 /*Element Interpolations{{{*/ -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp ¶
r22323 r22326 1034 1034 case MaxAbsVzEnum : return "MaxAbsVz"; 1035 1035 case FloatingAreaEnum : return "FloatingArea"; 1036 case FloatingAreaScaledEnum : return "FloatingAreaScaled"; 1036 1037 case GroundedAreaEnum : return "GroundedArea"; 1038 case GroundedAreaScaledEnum : return "GroundedAreaScaled"; 1037 1039 case IceMassEnum : return "IceMass"; 1040 case IceMassScaledEnum : return "IceMassScaled"; 1038 1041 case IceVolumeEnum : return "IceVolume"; 1042 case IceVolumeScaledEnum : return "IceVolumeScaled"; 1039 1043 case IceVolumeAboveFloatationEnum : return "IceVolumeAboveFloatation"; 1044 case IceVolumeAboveFloatationScaledEnum : return "IceVolumeAboveFloatationScaled"; 1040 1045 case TotalFloatingBmbEnum : return "TotalFloatingBmb"; 1046 case TotalFloatingBmbScaledEnum : return "TotalFloatingBmbScaled"; 1041 1047 case TotalGroundedBmbEnum : return "TotalGroundedBmb"; 1048 case TotalGroundedBmbScaledEnum : return "TotalGroundedBmbScaled"; 1042 1049 case TotalSmbEnum : return "TotalSmb"; 1050 case TotalSmbScaledEnum : return "TotalSmbScaled"; 1043 1051 case P0Enum : return "P0"; 1044 1052 case P0ArrayEnum : return "P0Array"; -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp ¶
r22323 r22326 1058 1058 else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum; 1059 1059 else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum; 1060 else if (strcmp(name,"FloatingAreaScaled")==0) return FloatingAreaScaledEnum; 1060 1061 else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum; 1062 else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum; 1061 1063 else if (strcmp(name,"IceMass")==0) return IceMassEnum; 1064 else if (strcmp(name,"IceMassScaled")==0) return IceMassScaledEnum; 1062 1065 else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 1066 else if (strcmp(name,"IceVolumeScaled")==0) return IceVolumeScaledEnum; 1063 1067 else if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum; 1068 else if (strcmp(name,"IceVolumeAboveFloatationScaled")==0) return IceVolumeAboveFloatationScaledEnum; 1064 1069 else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum; 1070 else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum; 1065 1071 else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum; 1072 else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum; 1066 1073 else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum; 1074 else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum; 1067 1075 else if (strcmp(name,"P0")==0) return P0Enum; 1068 1076 else if (strcmp(name,"P0Array")==0) return P0ArrayEnum;
Note:
See TracChangeset
for help on using the changeset viewer.