Changeset 16745
- Timestamp:
- 11/13/13 16:15:51 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
r16734 r16745 202 202 IssmDouble* values = xNew<IssmDouble>(numnodes); 203 203 IssmDouble* pressure = xNew<IssmDouble>(numnodes); 204 IssmDouble* surface = xNew<IssmDouble>(numnodes); 205 IssmDouble* B = xNew<IssmDouble>(numnodes); 204 206 IssmDouble* temperature = xNew<IssmDouble>(numnodes); 205 207 IssmDouble* waterfraction = xNew<IssmDouble>(numnodes); … … 215 217 /*Get all inputs and parameters*/ 216 218 element->GetInputValue(&converged,ConvergedEnum); 217 element->GetInputListOnNodes( pressure,PressureEnum);219 element->GetInputListOnNodes(&pressure[0],PressureEnum); 218 220 if(converged){ 219 221 for(i=0;i<numnodes;i++){ … … 229 231 * otherwise the rheology could be negative*/ 230 232 element->FindParam(&rheology_law,MaterialsRheologyLawEnum); 233 element->GetInputListOnNodes(&surface[0],SurfaceEnum); 231 234 switch(rheology_law){ 232 235 case NoneEnum: … … 234 237 break; 235 238 case PatersonEnum: 236 for(i=0;i<numnodes;i++) T_average+=values[i]/reCast<IssmDouble>(numnodes); 237 B_average=Paterson(T_average); 238 element->AddMaterialInput(MaterialsRheologyBEnum,&B_average,P0Enum); 239 for(i=0;i<numnodes;i++) B[i]=Paterson(values[i]); 240 element->AddMaterialInput(MaterialsRheologyBEnum,&B[0],P1Enum); 239 241 break; 240 case ArrheniusEnum:{ 241 Input* surface_input=element->GetInput(SurfaceEnum); _assert_(surface_input); 242 surface_input->GetInputAverage(&s_average); 242 case ArrheniusEnum: 243 243 element->GetVerticesCoordinates(&xyz_list); 244 for(i=0;i<numnodes;i++) T_average+=values[i]/reCast<IssmDouble>(numnodes); 245 //B_average=Arrhenius(T_average, 246 //s_average-((xyz_list[0][2]+xyz_list[1][2]+xyz_list[2][2]+xyz_list[3][2]+xyz_list[4][2]+xyz_list[5][2])/6.0), 247 //element->GetMaticeParameter(MaterialsRheologyNEnum)); 248 element->AddMaterialInput(MaterialsRheologyBEnum,&B_average,P0Enum); 244 for(i=0;i<numnodes;i++) B[i]=Arrhenius(values[i],surface[i]-xyz_list[i*3+2],element->GetMaterialParameter(MaterialsRheologyNEnum)); 245 element->AddMaterialInput(MaterialsRheologyBEnum,&B[0],P1Enum); 249 246 break; 250 }251 247 case LliboutryDuvalEnum: 252 for(i=0;i<numnodes;i++) T_average+=values[i]/reCast<IssmDouble>(numnodes); 253 for(i=0;i<numnodes;i++) P_average+=pressure[i]/reCast<IssmDouble>(numnodes); 254 B_average=LliboutryDuval(T_average,P_average, 255 element->GetMaterialParameter(MaterialsRheologyNEnum), 256 element->GetMaterialParameter(MaterialsBetaEnum), 257 element->GetMaterialParameter(ConstantsReferencetemperatureEnum), 258 element->GetMaterialParameter(MaterialsHeatcapacityEnum), 259 element->GetMaterialParameter(MaterialsLatentheatEnum)); 260 element->AddMaterialInput(MaterialsRheologyBEnum,&B_average,P0Enum); 261 break; 262 default: 263 _error_("Rheology law " << EnumToStringx(rheology_law) << " not supported yet"); 248 //for(i=0;i<numnodes;i++) B[i]=LliboutryDuval(values[i],pressure[i],material->GetN(),matpar->GetBeta(),matpar->GetReferenceTemperature(),matpar->GetHeatCapacity(),matpar->GetLatentHeat()); for(i=0;i<numnodes;i++) B[i]=Paterson(values[i]); 249 for(i=0;i<numnodes;i++) B[i]=Paterson(values[i]); 250 element->AddMaterialInput(MaterialsRheologyBEnum,&B[0],P1Enum); 251 break; 252 default: _error_("Rheology law " << EnumToStringx(rheology_law) << " not supported yet"); 264 253 } 265 254 } … … 271 260 xDelete<IssmDouble>(values); 272 261 xDelete<IssmDouble>(pressure); 262 xDelete<IssmDouble>(surface); 263 xDelete<IssmDouble>(B); 273 264 xDelete<IssmDouble>(temperature); 274 265 xDelete<IssmDouble>(waterfraction); -
issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
r16729 r16745 119 119 bool converged; 120 120 int i,rheology_law; 121 IssmDouble B_average,s_average,T_average=0.;122 121 int *doflist = NULL; 123 122 IssmDouble *xyz_list = NULL; … … 130 129 element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum); 131 130 IssmDouble* values = xNew<IssmDouble>(numnodes); 131 IssmDouble* surface = xNew<IssmDouble>(numnodes); 132 IssmDouble* B = xNew<IssmDouble>(numnodes); 132 133 133 134 /*Use the dof list to index into the solution vector: */ … … 144 145 if(hack){ 145 146 IssmDouble* pressure = xNew<IssmDouble>(numnodes); 146 element->GetInputListOn Vertices(pressure,PressureEnum);147 element->GetInputListOnNodes(&pressure[0],PressureEnum); 147 148 for(i=0;i<numnodes;i++){ 148 149 if(values[i]>element->TMeltingPoint(pressure[i])) values[i]=element->TMeltingPoint(pressure[i]); … … 160 161 * otherwise the rheology could be negative*/ 161 162 element->FindParam(&rheology_law,MaterialsRheologyLawEnum); 163 element->GetInputListOnNodes(&surface[0],SurfaceEnum); 162 164 switch(rheology_law){ 163 165 case NoneEnum: … … 165 167 break; 166 168 case PatersonEnum: 167 for(i=0;i<numnodes;i++) T_average+=values[i]/reCast<IssmDouble>(numnodes); 168 B_average=Paterson(T_average); 169 element->AddMaterialInput(MaterialsRheologyBEnum,&B_average,P0Enum); 169 for(i=0;i<numnodes;i++) B[i]=Paterson(values[i]); 170 element->AddMaterialInput(MaterialsRheologyBEnum,&B[0],P1Enum); 170 171 break; 171 172 case ArrheniusEnum:{ 172 Input* surface_input=element->GetInput(SurfaceEnum); _assert_(surface_input);173 surface_input->GetInputAverage(&s_average);174 173 element->GetVerticesCoordinates(&xyz_list); 175 for(i=0;i<numnodes;i++) T_average+=values[i]/reCast<IssmDouble>(numnodes); 176 //B_average=Arrhenius(T_average, 177 //s_average-((xyz_list[0][2]+xyz_list[1][2]+xyz_list[2][2]+xyz_list[3][2]+xyz_list[4][2]+xyz_list[5][2])/6.0), 178 //element->GetMaticeParameter(MaterialsRheologyNEnum)); 179 element->AddMaterialInput(MaterialsRheologyBEnum,&B_average,P0Enum); 174 for(i=0;i<numnodes;i++) B[i]=Arrhenius(values[i],surface[i]-xyz_list[i*3+2],element->GetMaterialParameter(MaterialsRheologyNEnum)); 175 element->AddMaterialInput(MaterialsRheologyBEnum,&B[0],P1Enum); 180 176 break; 181 177 } 182 178 default: 183 179 _error_("Rheology law " << EnumToStringx(rheology_law) << " not supported yet"); 184 185 180 } 186 181 } … … 191 186 /*Free ressources:*/ 192 187 xDelete<IssmDouble>(values); 188 xDelete<IssmDouble>(surface); 189 xDelete<IssmDouble>(B); 193 190 xDelete<IssmDouble>(xyz_list); 194 191 xDelete<int>(doflist); -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r16743 r16745 4929 4929 IssmDouble waterfraction[numdof]; 4930 4930 IssmDouble B[numdof]; 4931 IssmDouble B_average,s_average;4932 4931 int* doflist=NULL; 4933 4932 … … 4964 4963 * otherwise the rheology could be negative*/ 4965 4964 this->parameters->FindParam(&rheology_law,MaterialsRheologyLawEnum); 4966 GetInputListOnVertices(&surface[0], PressureEnum);4965 GetInputListOnVertices(&surface[0],SurfaceEnum); 4967 4966 switch(rheology_law){ 4968 4967 case NoneEnum:
Note:
See TracChangeset
for help on using the changeset viewer.