[20498] | 1 | Index: ../trunk-jpl/test/NightlyRun/test314.m
|
---|
| 2 | ===================================================================
|
---|
| 3 | --- ../trunk-jpl/test/NightlyRun/test314.m (revision 19763)
|
---|
| 4 | +++ ../trunk-jpl/test/NightlyRun/test314.m (revision 19764)
|
---|
| 5 | @@ -4,18 +4,18 @@
|
---|
| 6 | md=parameterize(md,'../Par/SquareSheetConstrained.par');
|
---|
| 7 | md=setflowequation(md,'SIA','all');
|
---|
| 8 | md.cluster=generic('name',oshostname(),'np',3);
|
---|
| 9 | -md.transient.requested_outputs={'default','GroundedArea','IceVolume'};
|
---|
| 10 | +md.transient.requested_outputs={'default','GroundedArea','FloatingArea','IceVolume'};
|
---|
| 11 | md=solve(md,TransientSolutionEnum());
|
---|
| 12 |
|
---|
| 13 | %Fields and tolerances to track changes
|
---|
| 14 | field_names ={...
|
---|
| 15 | - 'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1',...
|
---|
| 16 | - 'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2',...
|
---|
| 17 | - 'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3'};
|
---|
| 18 | + 'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1',...
|
---|
| 19 | + 'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2',...
|
---|
| 20 | + 'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3'};
|
---|
| 21 | field_tolerances={...
|
---|
| 22 | - 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13...
|
---|
| 23 | - 1e-10 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13...
|
---|
| 24 | - 1e-10 , 1.5e-13 , 1.5e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13, 1e-13};
|
---|
| 25 | + 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13...
|
---|
| 26 | + 1e-10 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13...
|
---|
| 27 | + 1e-10 , 1.5e-13 , 1.5e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13, 1e-13 , 1e-13};
|
---|
| 28 | field_values={...
|
---|
| 29 | (md.results.TransientSolution(1).Vx),...
|
---|
| 30 | (md.results.TransientSolution(1).Vy),...
|
---|
| 31 | @@ -25,6 +25,7 @@
|
---|
| 32 | (md.results.TransientSolution(1).Surface),...
|
---|
| 33 | (md.results.TransientSolution(1).Thickness),...
|
---|
| 34 | (md.results.TransientSolution(1).GroundedArea),...
|
---|
| 35 | + (md.results.TransientSolution(1).FloatingArea),...
|
---|
| 36 | (md.results.TransientSolution(2).Vx),...
|
---|
| 37 | (md.results.TransientSolution(2).Vy),...
|
---|
| 38 | (md.results.TransientSolution(2).Vel),...
|
---|
| 39 | @@ -33,6 +34,7 @@
|
---|
| 40 | (md.results.TransientSolution(2).Surface),...
|
---|
| 41 | (md.results.TransientSolution(2).Thickness),...
|
---|
| 42 | (md.results.TransientSolution(2).GroundedArea),...
|
---|
| 43 | + (md.results.TransientSolution(2).FloatingArea),...
|
---|
| 44 | (md.results.TransientSolution(3).Vx),...
|
---|
| 45 | (md.results.TransientSolution(3).Vy),...
|
---|
| 46 | (md.results.TransientSolution(3).Vel),...
|
---|
| 47 | @@ -41,4 +43,5 @@
|
---|
| 48 | (md.results.TransientSolution(3).Surface),...
|
---|
| 49 | (md.results.TransientSolution(3).Thickness),...
|
---|
| 50 | (md.results.TransientSolution(3).GroundedArea),...
|
---|
| 51 | + (md.results.TransientSolution(3).FloatingArea),...
|
---|
| 52 | };
|
---|
| 53 | Index: ../trunk-jpl/test/NightlyRun/test317.py
|
---|
| 54 | ===================================================================
|
---|
| 55 | --- ../trunk-jpl/test/NightlyRun/test317.py (revision 19763)
|
---|
| 56 | +++ ../trunk-jpl/test/NightlyRun/test317.py (revision 19764)
|
---|
| 57 | @@ -14,13 +14,13 @@
|
---|
| 58 | md.extrude(3,1.)
|
---|
| 59 | md=setflowequation(md,'HO','all')
|
---|
| 60 | md.cluster=generic('name',oshostname(),'np',3)
|
---|
| 61 | -md.transient.requested_outputs=['default','GroundedArea']
|
---|
| 62 | +md.transient.requested_outputs=['default','GroundedArea','FloatingArea']
|
---|
| 63 | md=solve(md,TransientSolutionEnum())
|
---|
| 64 |
|
---|
| 65 | #Fields and tolerances to track changes
|
---|
| 66 | -field_names =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1',\
|
---|
| 67 | - 'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2',\
|
---|
| 68 | - 'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3']
|
---|
| 69 | +field_names =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea'\
|
---|
| 70 | + 'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea',\
|
---|
| 71 | + 'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea']
|
---|
| 72 | field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,\
|
---|
| 73 | 1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,\
|
---|
| 74 | 1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12]
|
---|
| 75 | @@ -36,6 +36,7 @@
|
---|
| 76 | md.results.TransientSolution[0].Temperature,\
|
---|
| 77 | md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
|
---|
| 78 | md.results.TransientSolution[0].GroundedArea,\
|
---|
| 79 | + md.results.TransientSolution[0].FloatingArea,\
|
---|
| 80 | md.results.TransientSolution[1].Vx,\
|
---|
| 81 | md.results.TransientSolution[1].Vy,\
|
---|
| 82 | md.results.TransientSolution[1].Vz,\
|
---|
| 83 | @@ -47,6 +48,7 @@
|
---|
| 84 | md.results.TransientSolution[1].Temperature,\
|
---|
| 85 | md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
|
---|
| 86 | md.results.TransientSolution[1].GroundedArea,\
|
---|
| 87 | + md.results.TransientSolution[1].FloatingArea,\
|
---|
| 88 | md.results.TransientSolution[2].Vx,\
|
---|
| 89 | md.results.TransientSolution[2].Vy,\
|
---|
| 90 | md.results.TransientSolution[2].Vz,\
|
---|
| 91 | @@ -58,4 +60,5 @@
|
---|
| 92 | md.results.TransientSolution[2].Temperature,\
|
---|
| 93 | md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
|
---|
| 94 | md.results.TransientSolution[2].GroundedArea,\
|
---|
| 95 | + md.results.TransientSolution[2].FloatingArea,\
|
---|
| 96 | ]
|
---|
| 97 | Index: ../trunk-jpl/test/NightlyRun/test317.m
|
---|
| 98 | ===================================================================
|
---|
| 99 | --- ../trunk-jpl/test/NightlyRun/test317.m (revision 19763)
|
---|
| 100 | +++ ../trunk-jpl/test/NightlyRun/test317.m (revision 19764)
|
---|
| 101 | @@ -5,16 +5,16 @@
|
---|
| 102 | md=extrude(md,3,1.);
|
---|
| 103 | md=setflowequation(md,'HO','all');
|
---|
| 104 | md.cluster=generic('name',oshostname(),'np',3);
|
---|
| 105 | -md.transient.requested_outputs={'default','GroundedArea'};
|
---|
| 106 | +md.transient.requested_outputs={'default','GroundedArea','FloatingArea'};
|
---|
| 107 | md=solve(md,TransientSolutionEnum());
|
---|
| 108 |
|
---|
| 109 | %Fields and tolerances to track changes
|
---|
| 110 | -field_names ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1',...
|
---|
| 111 | - 'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2',...
|
---|
| 112 | - 'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3'};
|
---|
| 113 | -field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,...
|
---|
| 114 | - 1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,...
|
---|
| 115 | - 1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12};
|
---|
| 116 | +field_names ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea1',...
|
---|
| 117 | + 'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea2',...
|
---|
| 118 | + 'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea3'};
|
---|
| 119 | +field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,...
|
---|
| 120 | + 1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,...
|
---|
| 121 | + 1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12};
|
---|
| 122 | field_values={...
|
---|
| 123 | (md.results.TransientSolution(1).Vx),...
|
---|
| 124 | (md.results.TransientSolution(1).Vy),...
|
---|
| 125 | @@ -27,6 +27,7 @@
|
---|
| 126 | (md.results.TransientSolution(1).Temperature),...
|
---|
| 127 | (md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
|
---|
| 128 | (md.results.TransientSolution(1).GroundedArea),...
|
---|
| 129 | + (md.results.TransientSolution(1).FloatingArea),...
|
---|
| 130 | (md.results.TransientSolution(2).Vx),...
|
---|
| 131 | (md.results.TransientSolution(2).Vy),...
|
---|
| 132 | (md.results.TransientSolution(2).Vz),...
|
---|
| 133 | @@ -38,6 +39,7 @@
|
---|
| 134 | (md.results.TransientSolution(2).Temperature),...
|
---|
| 135 | (md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
|
---|
| 136 | (md.results.TransientSolution(2).GroundedArea),...
|
---|
| 137 | + (md.results.TransientSolution(2).FloatingArea),...
|
---|
| 138 | (md.results.TransientSolution(3).Vx),...
|
---|
| 139 | (md.results.TransientSolution(3).Vy),...
|
---|
| 140 | (md.results.TransientSolution(3).Vz),...
|
---|
| 141 | @@ -49,4 +51,5 @@
|
---|
| 142 | (md.results.TransientSolution(3).Temperature),...
|
---|
| 143 | (md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
|
---|
| 144 | (md.results.TransientSolution(3).GroundedArea),...
|
---|
| 145 | + (md.results.TransientSolution(3).FloatingArea),...
|
---|
| 146 | };
|
---|
| 147 | Index: ../trunk-jpl/test/NightlyRun/test314.py
|
---|
| 148 | ===================================================================
|
---|
| 149 | --- ../trunk-jpl/test/NightlyRun/test314.py (revision 19763)
|
---|
| 150 | +++ ../trunk-jpl/test/NightlyRun/test314.py (revision 19764)
|
---|
| 151 | @@ -13,18 +13,18 @@
|
---|
| 152 | md=parameterize(md,'../Par/SquareSheetConstrained.py')
|
---|
| 153 | md=setflowequation(md,'SIA','all')
|
---|
| 154 | md.cluster=generic('name',oshostname(),'np',3)
|
---|
| 155 | -md.transient.requested_outputs=['default','GroundedArea','IceVolume']
|
---|
| 156 | +md.transient.requested_outputs=['default','GroundedArea','FloatingArea','IceVolume']
|
---|
| 157 | md=solve(md,TransientSolutionEnum())
|
---|
| 158 |
|
---|
| 159 | #Fields and tolerances to track changes
|
---|
| 160 | field_names =[
|
---|
| 161 | -'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1',
|
---|
| 162 | -'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2',
|
---|
| 163 | -'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3']
|
---|
| 164 | +'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1',
|
---|
| 165 | +'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2',
|
---|
| 166 | +'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3']
|
---|
| 167 | field_tolerances=[
|
---|
| 168 | - 1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
|
---|
| 169 | - 1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
|
---|
| 170 | - 1e-10,1.5e-13,1.5e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
|
---|
| 171 | + 1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
|
---|
| 172 | + 1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
|
---|
| 173 | + 1e-10,1.5e-13,1.5e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
|
---|
| 174 | field_values=[\
|
---|
| 175 | md.results.TransientSolution[0].Vx,\
|
---|
| 176 | md.results.TransientSolution[0].Vy,\
|
---|
| 177 | @@ -34,6 +34,7 @@
|
---|
| 178 | md.results.TransientSolution[0].Surface,\
|
---|
| 179 | md.results.TransientSolution[0].Thickness,\
|
---|
| 180 | md.results.TransientSolution[0].GroundedArea,\
|
---|
| 181 | + md.results.TransientSolution[0].FloatingArea,\
|
---|
| 182 | md.results.TransientSolution[1].Vx,\
|
---|
| 183 | md.results.TransientSolution[1].Vy,\
|
---|
| 184 | md.results.TransientSolution[1].Vel,\
|
---|
| 185 | @@ -42,6 +43,7 @@
|
---|
| 186 | md.results.TransientSolution[1].Surface,\
|
---|
| 187 | md.results.TransientSolution[1].Thickness,\
|
---|
| 188 | md.results.TransientSolution[1].GroundedArea,\
|
---|
| 189 | + md.results.TransientSolution[1].FloatingArea,\
|
---|
| 190 | md.results.TransientSolution[2].Vx,\
|
---|
| 191 | md.results.TransientSolution[2].Vy,\
|
---|
| 192 | md.results.TransientSolution[2].Vel,\
|
---|
| 193 | @@ -50,4 +52,5 @@
|
---|
| 194 | md.results.TransientSolution[2].Surface,\
|
---|
| 195 | md.results.TransientSolution[2].Thickness,\
|
---|
| 196 | md.results.TransientSolution[2].GroundedArea,\
|
---|
| 197 | + md.results.TransientSolution[2].FloatingArea,\
|
---|
| 198 | ]
|
---|
| 199 | Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
|
---|
| 200 | ===================================================================
|
---|
| 201 | --- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 19763)
|
---|
| 202 | +++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 19764)
|
---|
| 203 | @@ -901,6 +901,7 @@
|
---|
| 204 | MinVzEnum,
|
---|
| 205 | MaxVzEnum,
|
---|
| 206 | MaxAbsVzEnum,
|
---|
| 207 | + FloatingAreaEnum,
|
---|
| 208 | GroundedAreaEnum,
|
---|
| 209 | IceMassEnum,
|
---|
| 210 | IceVolumeEnum,
|
---|
| 211 | Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
|
---|
| 212 | ===================================================================
|
---|
| 213 | --- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 19763)
|
---|
| 214 | +++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 19764)
|
---|
| 215 | @@ -879,6 +879,7 @@
|
---|
| 216 | case MinVzEnum : return "MinVz";
|
---|
| 217 | case MaxVzEnum : return "MaxVz";
|
---|
| 218 | case MaxAbsVzEnum : return "MaxAbsVz";
|
---|
| 219 | + case FloatingAreaEnum : return "FloatingArea";
|
---|
| 220 | case GroundedAreaEnum : return "GroundedArea";
|
---|
| 221 | case IceMassEnum : return "IceMass";
|
---|
| 222 | case IceVolumeEnum : return "IceVolume";
|
---|
| 223 | Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
|
---|
| 224 | ===================================================================
|
---|
| 225 | --- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 19763)
|
---|
| 226 | +++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 19764)
|
---|
| 227 | @@ -900,6 +900,7 @@
|
---|
| 228 | else if (strcmp(name,"MinVz")==0) return MinVzEnum;
|
---|
| 229 | else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
|
---|
| 230 | else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;
|
---|
| 231 | + else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
|
---|
| 232 | else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum;
|
---|
| 233 | else if (strcmp(name,"IceMass")==0) return IceMassEnum;
|
---|
| 234 | else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
|
---|
| 235 | Index: ../trunk-jpl/src/c/classes/FemModel.cpp
|
---|
| 236 | ===================================================================
|
---|
| 237 | --- ../trunk-jpl/src/c/classes/FemModel.cpp (revision 19763)
|
---|
| 238 | +++ ../trunk-jpl/src/c/classes/FemModel.cpp (revision 19764)
|
---|
| 239 | @@ -1008,6 +1008,7 @@
|
---|
| 240 | case IceVolumeEnum: this->IceVolumex(&double_result); break;
|
---|
| 241 | case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(&double_result); break;
|
---|
| 242 | case GroundedAreaEnum: this->GroundedAreax(&double_result); break;
|
---|
| 243 | + case FloatingAreaEnum: this->FloatingAreax(&double_result); break;
|
---|
| 244 | case MinVelEnum: this->MinVelx(&double_result); break;
|
---|
| 245 | case MaxVelEnum: this->MaxVelx(&double_result); break;
|
---|
| 246 | case MinVxEnum: this->MinVxx(&double_result); break;
|
---|
| 247 | @@ -1614,6 +1615,22 @@
|
---|
| 248 | *pdiv=max_divergence;
|
---|
| 249 |
|
---|
| 250 | }/*}}}*/
|
---|
| 251 | +void FemModel::FloatingAreax(IssmDouble* pV){/*{{{*/
|
---|
| 252 | +
|
---|
| 253 | + IssmDouble local_floating_area= 0;
|
---|
| 254 | + IssmDouble total_floating_area;
|
---|
| 255 | +
|
---|
| 256 | + for(int i=0;i<this->elements->Size();i++){
|
---|
| 257 | + Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
|
---|
| 258 | + local_floating_area+=element->FloatingArea();
|
---|
| 259 | + }
|
---|
| 260 | + ISSM_MPI_Reduce(&local_floating_area,&total_floating_area,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
|
---|
| 261 | + ISSM_MPI_Bcast(&total_floating_area,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
|
---|
| 262 | +
|
---|
| 263 | + /*Assign output pointers: */
|
---|
| 264 | + *pV=total_floating_area;
|
---|
| 265 | +
|
---|
| 266 | +}/*}}}*/
|
---|
| 267 | void FemModel::GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,IssmDouble* ug){/*{{{*/
|
---|
| 268 |
|
---|
| 269 | /*Get vector sizes for current configuration*/
|
---|
| 270 | Index: ../trunk-jpl/src/c/classes/Elements/Element.h
|
---|
| 271 | ===================================================================
|
---|
| 272 | --- ../trunk-jpl/src/c/classes/Elements/Element.h (revision 19763)
|
---|
| 273 | +++ ../trunk-jpl/src/c/classes/Elements/Element.h (revision 19764)
|
---|
| 274 | @@ -193,6 +193,7 @@
|
---|
| 275 | virtual void ElementResponse(IssmDouble* presponse,int response_enum)=0;
|
---|
| 276 | virtual void ElementSizes(IssmDouble* phx,IssmDouble* phy,IssmDouble* phz)=0;
|
---|
| 277 | virtual int FiniteElement(void)=0;
|
---|
| 278 | + virtual IssmDouble FloatingArea(void)=0;
|
---|
| 279 | virtual void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating)=0;
|
---|
| 280 | virtual Element* GetBasalElement(void)=0;
|
---|
| 281 | virtual int GetElementType(void)=0;
|
---|
| 282 | Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
|
---|
| 283 | ===================================================================
|
---|
| 284 | --- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 19763)
|
---|
| 285 | +++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 19764)
|
---|
| 286 | @@ -910,6 +910,27 @@
|
---|
| 287 | return this->element_type;
|
---|
| 288 | }
|
---|
| 289 | /*}}}*/
|
---|
| 290 | +IssmDouble Tria::FloatingArea(void){/*{{{*/
|
---|
| 291 | +
|
---|
| 292 | + /*Intermediaries*/
|
---|
| 293 | + int domaintype;
|
---|
| 294 | + IssmDouble phi;
|
---|
| 295 | + IssmDouble *xyz_list = NULL;
|
---|
| 296 | +
|
---|
| 297 | + if(!IsIceInElement())return 0.;
|
---|
| 298 | +
|
---|
| 299 | + /*Get problem dimension*/
|
---|
| 300 | + this->FindParam(&domaintype,DomainTypeEnum);
|
---|
| 301 | + if(domaintype!=Domain2DhorizontalEnum && domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
|
---|
| 302 | +
|
---|
| 303 | + this->GetVerticesCoordinates(&xyz_list);
|
---|
| 304 | + phi=this->GetGroundedPortion(xyz_list);
|
---|
| 305 | +
|
---|
| 306 | + /*Clean up and return*/
|
---|
| 307 | + xDelete<IssmDouble>(xyz_list);
|
---|
| 308 | + return (1-phi)*this->GetArea();
|
---|
| 309 | +}
|
---|
| 310 | +/*}}}*/
|
---|
| 311 | void Tria::FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){/*{{{*/
|
---|
| 312 |
|
---|
| 313 | if(!IsOnBase()) return;
|
---|
| 314 | Index: ../trunk-jpl/src/c/classes/Elements/Tria.h
|
---|
| 315 | ===================================================================
|
---|
| 316 | --- ../trunk-jpl/src/c/classes/Elements/Tria.h (revision 19763)
|
---|
| 317 | +++ ../trunk-jpl/src/c/classes/Elements/Tria.h (revision 19764)
|
---|
| 318 | @@ -72,6 +72,7 @@
|
---|
| 319 | void ElementResponse(IssmDouble* presponse,int response_enum);
|
---|
| 320 | void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
|
---|
| 321 | int FiniteElement(void);
|
---|
| 322 | + IssmDouble FloatingArea(void);
|
---|
| 323 | void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating);
|
---|
| 324 | Element* GetBasalElement(void){_error_("not implemented yet");};
|
---|
| 325 | void GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues);
|
---|
| 326 | Index: ../trunk-jpl/src/c/classes/Elements/Penta.cpp
|
---|
| 327 | ===================================================================
|
---|
| 328 | --- ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 19763)
|
---|
| 329 | +++ ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 19764)
|
---|
| 330 | @@ -654,6 +654,27 @@
|
---|
| 331 | return this->element_type;
|
---|
| 332 | }
|
---|
| 333 | /*}}}*/
|
---|
| 334 | +IssmDouble Penta::FloatingArea(void){/*{{{*/
|
---|
| 335 | +
|
---|
| 336 | + /*Intermediaries*/
|
---|
| 337 | + int domaintype;
|
---|
| 338 | + IssmDouble phi,base_area;
|
---|
| 339 | + IssmDouble xyz_list[NUMVERTICES][3];
|
---|
| 340 | +
|
---|
| 341 | + if(!IsIceInElement() || !IsOnBase())return 0.;
|
---|
| 342 | +
|
---|
| 343 | + /*Get problem dimension*/
|
---|
| 344 | + this->FindParam(&domaintype,DomainTypeEnum);
|
---|
| 345 | + if(domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
|
---|
| 346 | +
|
---|
| 347 | + ::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
|
---|
| 348 | + phi=this->GetGroundedPortion(&xyz_list[0][0]);
|
---|
| 349 | + base_area= 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
|
---|
| 350 | +
|
---|
| 351 | + /*Clean up and return*/
|
---|
| 352 | + return (1-phi)*base_area;
|
---|
| 353 | +}
|
---|
| 354 | +/*}}}*/
|
---|
| 355 | void Penta::FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){/*{{{*/
|
---|
| 356 |
|
---|
| 357 | if(!IsOnBase()) return;
|
---|
| 358 | Index: ../trunk-jpl/src/c/classes/Elements/Penta.h
|
---|
| 359 | ===================================================================
|
---|
| 360 | --- ../trunk-jpl/src/c/classes/Elements/Penta.h (revision 19763)
|
---|
| 361 | +++ ../trunk-jpl/src/c/classes/Elements/Penta.h (revision 19764)
|
---|
| 362 | @@ -61,6 +61,7 @@
|
---|
| 363 | void ElementResponse(IssmDouble* presponse,int response_enum);
|
---|
| 364 | void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
|
---|
| 365 | int FiniteElement(void);
|
---|
| 366 | + IssmDouble FloatingArea(void);
|
---|
| 367 | void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating);
|
---|
| 368 | void GetAreaCoordinates(IssmDouble *area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints);
|
---|
| 369 | Element* GetBasalElement(void);
|
---|
| 370 | Index: ../trunk-jpl/src/c/classes/Elements/Seg.h
|
---|
| 371 | ===================================================================
|
---|
| 372 | --- ../trunk-jpl/src/c/classes/Elements/Seg.h (revision 19763)
|
---|
| 373 | +++ ../trunk-jpl/src/c/classes/Elements/Seg.h (revision 19764)
|
---|
| 374 | @@ -55,8 +55,9 @@
|
---|
| 375 | void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum){_error_("not implemented yet");};
|
---|
| 376 | void ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");};
|
---|
| 377 | void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){_error_("not implemented yet");};
|
---|
| 378 | + int FiniteElement(void);
|
---|
| 379 | + IssmDouble FloatingArea(void){_error_("not implemented yet");};
|
---|
| 380 | void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");};
|
---|
| 381 | - int FiniteElement(void);
|
---|
| 382 | Element* GetBasalElement(void){_error_("not implemented yet");};
|
---|
| 383 | int GetElementType(void){_error_("not implemented yet");};
|
---|
| 384 | void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating){_error_("not implemented yet");};
|
---|
| 385 | Index: ../trunk-jpl/src/c/classes/Elements/Tetra.h
|
---|
| 386 | ===================================================================
|
---|
| 387 | --- ../trunk-jpl/src/c/classes/Elements/Tetra.h (revision 19763)
|
---|
| 388 | +++ ../trunk-jpl/src/c/classes/Elements/Tetra.h (revision 19764)
|
---|
| 389 | @@ -60,6 +60,7 @@
|
---|
| 390 | void FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3);
|
---|
| 391 | void FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3);
|
---|
| 392 | int FiniteElement(void);
|
---|
| 393 | + IssmDouble FloatingArea(void){_error_("not implemented yet");};
|
---|
| 394 | void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");};
|
---|
| 395 | Element* GetBasalElement(void){_error_("not implemented yet");};
|
---|
| 396 | int GetElementType(void);
|
---|
| 397 | Index: ../trunk-jpl/src/c/classes/FemModel.h
|
---|
| 398 | ===================================================================
|
---|
| 399 | --- ../trunk-jpl/src/c/classes/FemModel.h (revision 19763)
|
---|
| 400 | +++ ../trunk-jpl/src/c/classes/FemModel.h (revision 19764)
|
---|
| 401 | @@ -81,6 +81,7 @@
|
---|
| 402 | void TotalSmbx(IssmDouble* pSmb);
|
---|
| 403 | void Divergencex(IssmDouble* pdiv);
|
---|
| 404 | void MaxDivergencex(IssmDouble* pdiv);
|
---|
| 405 | + void FloatingAreax(IssmDouble* pV);
|
---|
| 406 | void GroundedAreax(IssmDouble* pV);
|
---|
| 407 | void IceMassx(IssmDouble* pV);
|
---|
| 408 | void IceVolumex(IssmDouble* pV);
|
---|
| 409 | Index: ../trunk-jpl/src/m/enum/FloatingAreaEnum.m
|
---|
| 410 | ===================================================================
|
---|
| 411 | --- ../trunk-jpl/src/m/enum/FloatingAreaEnum.m (revision 0)
|
---|
| 412 | +++ ../trunk-jpl/src/m/enum/FloatingAreaEnum.m (revision 19764)
|
---|
| 413 | @@ -0,0 +1,11 @@
|
---|
| 414 | +function macro=FloatingAreaEnum()
|
---|
| 415 | +%FLOATINGAREAENUM - Enum of FloatingArea
|
---|
| 416 | +%
|
---|
| 417 | +% WARNING: DO NOT MODIFY THIS FILE
|
---|
| 418 | +% this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
|
---|
| 419 | +% Please read src/c/shared/Enum/README for more information
|
---|
| 420 | +%
|
---|
| 421 | +% Usage:
|
---|
| 422 | +% macro=FloatingAreaEnum()
|
---|
| 423 | +
|
---|
| 424 | +macro=StringToEnum('FloatingArea');
|
---|
| 425 | Index: ../trunk-jpl/src/m/enum/EnumDefinitions.py
|
---|
| 426 | ===================================================================
|
---|
| 427 | --- ../trunk-jpl/src/m/enum/EnumDefinitions.py (revision 19763)
|
---|
| 428 | +++ ../trunk-jpl/src/m/enum/EnumDefinitions.py (revision 19764)
|
---|
| 429 | @@ -871,6 +871,7 @@
|
---|
| 430 | def MinVzEnum(): return StringToEnum("MinVz")[0]
|
---|
| 431 | def MaxVzEnum(): return StringToEnum("MaxVz")[0]
|
---|
| 432 | def MaxAbsVzEnum(): return StringToEnum("MaxAbsVz")[0]
|
---|
| 433 | +def FloatingAreaEnum(): return StringToEnum("FloatingArea")[0]
|
---|
| 434 | def GroundedAreaEnum(): return StringToEnum("GroundedArea")[0]
|
---|
| 435 | def IceMassEnum(): return StringToEnum("IceMass")[0]
|
---|
| 436 | def IceVolumeEnum(): return StringToEnum("IceVolume")[0]
|
---|