Changeset 16810
- Timestamp:
- 11/16/13 21:18:41 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp
r16782 r16810 76 76 }/*}}}*/ 77 77 ElementVector* MeltingAnalysis::CreatePVector(Element* element){/*{{{*/ 78 _error_("not implemented yet");78 return NULL; 79 79 }/*}}}*/ 80 80 void MeltingAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/ -
issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
r16782 r16810 116 116 }/*}}}*/ 117 117 ElementVector* ThermalAnalysis::CreatePVector(Element* element){/*{{{*/ 118 _error_("not implemented yet"); 118 119 /*compute all load vectors for this element*/ 120 ElementVector* pe1=CreatePVectorVolume(element); 121 ElementVector* pe2=CreatePVectorSheet(element); 122 ElementVector* pe3=CreatePVectorShelf(element); 123 ElementVector* pe =new ElementVector(pe1,pe2,pe3); 124 125 /*clean-up and return*/ 126 delete pe1; 127 delete pe2; 128 delete pe3; 129 return pe; 130 }/*}}}*/ 131 ElementVector* ThermalAnalysis::CreatePVectorVolume(Element* element){/*{{{*/ 132 133 /*Intermediaries*/ 134 int stabilization; 135 IssmDouble Jdet,phi,dt; 136 IssmDouble temperature; 137 IssmDouble tau_parameter,diameter; 138 IssmDouble u,v,w; 139 IssmDouble scalar_def,scalar_transient; 140 IssmDouble* xyz_list = NULL; 141 142 /*Fetch number of nodes and dof for this finite element*/ 143 int numnodes = element->GetNumberOfNodes(); 144 145 /*Initialize Element vector*/ 146 ElementVector* pe = element->NewElementVector(); 147 IssmDouble* basis = xNew<IssmDouble>(numnodes); 148 IssmDouble* dbasis = xNew<IssmDouble>(3*numnodes); 149 150 /*Retrieve all inputs and parameters*/ 151 element->GetVerticesCoordinates(&xyz_list); 152 IssmDouble rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum); 153 IssmDouble heatcapacity = element->GetMaterialParameter(MaterialsHeatcapacityEnum); 154 IssmDouble thermalconductivity = element->GetMaterialParameter(MaterialsThermalconductivityEnum); 155 IssmDouble kappa = thermalconductivity/(rho_ice*heatcapacity); 156 element->FindParam(&dt,TimesteppingTimeStepEnum); 157 element->FindParam(&stabilization,ThermalStabilizationEnum); 158 Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input); 159 Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input); 160 Input* vz_input=element->GetInput(VzEnum); _assert_(vz_input); 161 Input* temperature_input = NULL; 162 if(reCast<bool,IssmDouble>(dt)){temperature_input = element->GetInput(TemperatureEnum); _assert_(temperature_input);} 163 if(stabilization==2) diameter=element->MinEdgeLength(xyz_list); 164 165 /* Start looping on the number of gaussian points: */ 166 Gauss* gauss=element->NewGauss(3); 167 for(int ig=gauss->begin();ig<gauss->end();ig++){ 168 gauss->GaussPoint(ig); 169 170 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 171 element->NodalFunctions(basis,gauss); 172 element->ViscousHeating(&phi,xyz_list,gauss,vx_input,vy_input,vz_input); 173 174 scalar_def=phi/(rho_ice*heatcapacity)*Jdet*gauss->weight; 175 if(reCast<bool,IssmDouble>(dt)) scalar_def=scalar_def*dt; 176 177 for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_def*basis[i]; 178 179 /* Build transient now */ 180 if(reCast<bool,IssmDouble>(dt)){ 181 temperature_input->GetInputValue(&temperature, gauss); 182 scalar_transient=temperature*Jdet*gauss->weight; 183 for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_transient*basis[i]; 184 } 185 186 if(stabilization==2){ 187 element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss); 188 189 vx_input->GetInputValue(&u,gauss); 190 vy_input->GetInputValue(&v,gauss); 191 vz_input->GetInputValue(&w,gauss); 192 193 tau_parameter=element->StabilizationParameter(u,v,w,diameter,kappa); 194 195 for(int i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0*3+i]+v*dbasis[1*3+i]+w*dbasis[2*3+i]); 196 if(reCast<bool,IssmDouble>(dt)){ 197 for(int i=0;i<numnodes;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0*3+i]+v*dbasis[1*3+i]+w*dbasis[2*3+i]); 198 } 199 } 200 } 201 202 /*Clean up and return*/ 203 xDelete<IssmDouble>(basis); 204 xDelete<IssmDouble>(dbasis); 205 xDelete<IssmDouble>(xyz_list); 206 delete gauss; 207 return pe; 208 209 }/*}}}*/ 210 ElementVector* ThermalAnalysis::CreatePVectorSheet(Element* element){/*{{{*/ 211 return NULL; 212 }/*}}}*/ 213 ElementVector* ThermalAnalysis::CreatePVectorShelf(Element* element){/*{{{*/ 214 215 IssmDouble t_pmp,dt,Jdet,scalar_ocean,pressure; 216 IssmDouble *xyz_list_base = NULL; 217 218 /*Get basal element*/ 219 if(!element->IsOnBed() || !element->IsFloating()) return NULL; 220 221 /*Fetch number of nodes for this finite element*/ 222 int numnodes = element->GetNumberOfNodes(); 223 224 /*Initialize vectors*/ 225 ElementVector* pe = element->NewElementVector(); 226 IssmDouble* basis = xNew<IssmDouble>(numnodes); 227 228 /*Retrieve all inputs and parameters*/ 229 element->GetVerticesCoordinatesBase(&xyz_list_base); 230 element->FindParam(&dt,TimesteppingTimeStepEnum); 231 Input* pressure_input=element->GetInput(PressureEnum); _assert_(pressure_input); 232 IssmDouble gravity = element->GetMaterialParameter(ConstantsGEnum); 233 IssmDouble rho_water = element->GetMaterialParameter(MaterialsRhoWaterEnum); 234 IssmDouble rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum); 235 IssmDouble heatcapacity = element->GetMaterialParameter(MaterialsHeatcapacityEnum); 236 IssmDouble mixed_layer_capacity= element->GetMaterialParameter(MaterialsMixedLayerCapacityEnum); 237 IssmDouble thermal_exchange_vel= element->GetMaterialParameter(MaterialsThermalExchangeVelocityEnum); 238 239 /* Start looping on the number of gaussian points: */ 240 Gauss* gauss=element->NewGaussBase(2); 241 for(int ig=gauss->begin();ig<gauss->end();ig++){ 242 gauss->GaussPoint(ig); 243 244 element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss); 245 element->NodalFunctions(basis,gauss); 246 247 pressure_input->GetInputValue(&pressure,gauss); 248 t_pmp=element->TMeltingPoint(pressure); 249 250 scalar_ocean=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel*(t_pmp)/(heatcapacity*rho_ice); 251 if(reCast<bool,IssmDouble>(dt)) scalar_ocean=dt*scalar_ocean; 252 253 for(int i=0;i<numnodes;i++) pe->values[i]+=scalar_ocean*basis[i]; 254 } 255 256 /*Clean up and return*/ 257 delete gauss; 258 xDelete<IssmDouble>(basis); 259 xDelete<IssmDouble>(xyz_list_base); 260 return pe; 119 261 }/*}}}*/ 120 262 void ThermalAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/ -
issm/trunk-jpl/src/c/analyses/ThermalAnalysis.h
r16782 r16810 23 23 ElementMatrix* CreateKMatrix(Element* element); 24 24 ElementVector* CreatePVector(Element* element); 25 ElementVector* CreatePVectorVolume(Element* element); 26 ElementVector* CreatePVectorSheet(Element* element); 27 ElementVector* CreatePVectorShelf(Element* element); 25 28 void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element); 26 29 void InputUpdateFromSolution(IssmDouble* solution,Element* element); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r16807 r16810 53 53 virtual int FiniteElement(void)=0; 54 54 virtual IssmDouble GetMaterialParameter(int enum_in)=0; 55 virtual IssmDouble MinEdgeLength(IssmDouble* xyz_list)=0; 55 56 virtual void NodalFunctions(IssmDouble* basis,Gauss* gauss)=0; 57 virtual void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss)=0; 56 58 virtual void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss)=0; 57 59 virtual void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss)=0; … … 127 129 virtual void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe)=0; 128 130 virtual void ResetCoordinateSystem()=0; 131 virtual IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa)=0; 132 virtual void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input)=0; 129 133 virtual int VelocityInterpolation()=0; 130 134 virtual int PressureInterpolation()=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r16807 r16810 1528 1528 } 1529 1529 /*}}}*/ 1530 /*FUNCTION Penta:: GetStabilizationParameter {{{*/1531 IssmDouble Penta:: GetStabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){1530 /*FUNCTION Penta::StabilizationParameter {{{*/ 1531 IssmDouble Penta::StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){ 1532 1532 /*Compute stabilization parameter*/ 1533 1533 /*kappa=thermalconductivity/(rho_ice*hearcapacity) for thermal model*/ … … 2465 2465 /*}}}*/ 2466 2466 /*FUNCTION Penta::MinEdgeLength{{{*/ 2467 IssmDouble Penta::MinEdgeLength(IssmDouble xyz_list[6][3]){2467 IssmDouble Penta::MinEdgeLength(IssmDouble* xyz_list){ 2468 2468 /*Return the minimum lenght of the nine egdes of the penta*/ 2469 2469 … … 2479 2479 2480 2480 /*Compute the length of this edge and compare it to the minimal length*/ 2481 length=sqrt(pow(xyz_list[node0 ][0]-xyz_list[node1][0],2)+pow(xyz_list[node0][1]-xyz_list[node1][1],2)+pow(xyz_list[node0][2]-xyz_list[node1][2],2));2481 length=sqrt(pow(xyz_list[node0*3+0]-xyz_list[node1*3+0],2)+pow(xyz_list[node0*3+1]-xyz_list[node1*3+1],2)+pow(xyz_list[node0*3+2]-xyz_list[node1*3+2],2)); 2482 2482 if(length<minlength || minlength<0) minlength=length; 2483 2483 } … … 2543 2543 _assert_(gauss->Enum()==GaussPentaEnum); 2544 2544 this->GetNodalFunctions(basis,(GaussPenta*)gauss); 2545 2546 } 2547 /*}}}*/ 2548 /*FUNCTION Penta::NodalFunctionsDerivatives{{{*/ 2549 void Penta::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){ 2550 2551 _assert_(gauss->Enum()==GaussPentaEnum); 2552 this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussPenta*)gauss); 2545 2553 2546 2554 } … … 3379 3387 } 3380 3388 /*}}}*/ 3389 /*FUNCTION Penta::ViscousHeating{{{*/ 3390 void Penta::ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){ 3391 3392 /*Intermediaries*/ 3393 IssmDouble phi; 3394 IssmDouble viscosity; 3395 IssmDouble epsilon[6]; 3396 3397 _assert_(gauss->Enum()==GaussPentaEnum); 3398 this->GetStrainRate3d(&epsilon[0],xyz_list,(GaussPenta*)gauss,vx_input,vy_input,vz_input); 3399 material->GetViscosity3dFS(&viscosity,&epsilon[0]); 3400 GetPhi(&phi,&epsilon[0],viscosity); 3401 3402 /*Assign output pointer*/ 3403 *pphi = phi; 3404 } 3405 /*}}}*/ 3381 3406 /*FUNCTION Penta::VelocityInterpolation{{{*/ 3382 3407 int Penta::VelocityInterpolation(void){ … … 3742 3767 Input* vym_input=inputs->GetInput(VyMeshEnum); _assert_(vym_input); 3743 3768 Input* vzm_input=inputs->GetInput(VzMeshEnum); _assert_(vzm_input); 3744 if (stabilization==2) diameter=MinEdgeLength( xyz_list);3769 if (stabilization==2) diameter=MinEdgeLength(&xyz_list[0][0]); 3745 3770 3746 3771 /* Start looping on the number of gaussian points: */ … … 3825 3850 else if(stabilization==2){ 3826 3851 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss); 3827 tau_parameter= GetStabilizationParameter(u-um,v-vm,w-wm,diameter,kappa/rho_ice);3852 tau_parameter=StabilizationParameter(u-um,v-vm,w-wm,diameter,kappa/rho_ice); 3828 3853 3829 3854 for(i=0;i<numdof;i++){ … … 3973 3998 Input* vym_input=inputs->GetInput(VyMeshEnum); _assert_(vym_input); 3974 3999 Input* vzm_input=inputs->GetInput(VzMeshEnum); _assert_(vzm_input); 3975 if (stabilization==2) diameter=MinEdgeLength( xyz_list);4000 if (stabilization==2) diameter=MinEdgeLength(&xyz_list[0][0]); 3976 4001 3977 4002 /* Start looping on the number of gaussian points: */ … … 4054 4079 else if(stabilization==2){ 4055 4080 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss); 4056 tau_parameter= GetStabilizationParameter(u-um,v-vm,w-wm,diameter,kappa);4081 tau_parameter=StabilizationParameter(u-um,v-vm,w-wm,diameter,kappa); 4057 4082 4058 4083 for(i=0;i<numdof;i++){ … … 4188 4213 } 4189 4214 if (stabilization==2){ 4190 diameter=MinEdgeLength( xyz_list);4215 diameter=MinEdgeLength(&xyz_list[0][0]); 4191 4216 } 4192 4217 … … 4227 4252 kappa=matpar->GetEnthalpyDiffusionParameterVolume(enthalpypicard,pressure_p); 4228 4253 kappa/=rho_ice; 4229 tau_parameter= GetStabilizationParameter(u,v,w,diameter,kappa);4254 tau_parameter=StabilizationParameter(u,v,w,diameter,kappa); 4230 4255 4231 4256 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]); … … 4459 4484 Input* temperature_input=NULL; 4460 4485 if(reCast<bool,IssmDouble>(dt)) temperature_input=inputs->GetInput(TemperatureEnum); _assert_(inputs); 4461 if(stabilization==2) diameter=MinEdgeLength( xyz_list);4486 if(stabilization==2) diameter=MinEdgeLength(&xyz_list[0][0]); 4462 4487 4463 4488 /* Start looping on the number of gaussian points: */ … … 4493 4518 vz_input->GetInputValue(&w, gauss); 4494 4519 4495 tau_parameter= GetStabilizationParameter(u,v,w,diameter,kappa);4520 tau_parameter=StabilizationParameter(u,v,w,diameter,kappa); 4496 4521 4497 4522 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]); … … 7615 7640 /*Find minimal length and B*/ 7616 7641 rigidity=material->GetB(); 7617 diameter=MinEdgeLength( xyz_list);7642 diameter=MinEdgeLength(&xyz_list[0][0]); 7618 7643 7619 7644 gauss=new GaussPenta(); … … 8756 8781 8757 8782 /*Find minimal length*/ 8758 diameter=MinEdgeLength( xyz_list);8783 diameter=MinEdgeLength(&xyz_list[0][0]); 8759 8784 8760 8785 gauss=new GaussPenta(); -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r16807 r16810 124 124 IssmDouble TimeAdapt(); 125 125 void ViscousHeatingCreateInput(void); 126 void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 126 127 127 128 #ifdef _HAVE_RESPONSES_ … … 224 225 void GetPhi(IssmDouble* phi, IssmDouble* epsilon, IssmDouble viscosity); 225 226 void GetQuadNormal(IssmDouble* normal,IssmDouble xyz_list[4][3]); 226 IssmDouble GetStabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa);227 227 void GetStrainRate3dHO(IssmDouble* epsilon,IssmDouble* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input); 228 228 void GetStrainRate3d(IssmDouble* epsilon,IssmDouble* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input, Input* vz_input); … … 247 247 ElementVector* NewElementVector(int approximation_enum); 248 248 void NodalFunctions(IssmDouble* basis,Gauss* gauss); 249 void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 249 250 void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss); 250 251 void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss); 251 IssmDouble MinEdgeLength(IssmDouble xyz_list[6][3]);252 IssmDouble MinEdgeLength(IssmDouble* xyz_list); 252 253 void SetClone(int* minranks); 253 254 Tria* SpawnTria(int location); 254 255 void SurfaceNormal(IssmDouble* surface_normal, IssmDouble xyz_list[3][3]); 256 IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa); 255 257 void TransformLoadVectorCoord(ElementVector* pe,int transformenum); 256 258 void TransformLoadVectorCoord(ElementVector* pe,int* transformenum_list); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r16807 r16810 110 110 void JacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");}; 111 111 void JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){_error_("not implemented yet");}; 112 IssmDouble MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");}; 112 113 void NodalFunctions(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; 113 114 void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; 114 115 void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; 116 void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");}; 115 117 bool NoIceInElement(){_error_("not implemented yet");}; 116 118 void NormalBase(IssmDouble* normal,IssmDouble* xyz_list){_error_("not implemented yet");}; … … 118 120 int NumberofNodesPressure(void){_error_("not implemented yet");}; 119 121 Element* SpawnBasalElement(void){_error_("not implemented yet");}; 122 IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");}; 120 123 int PressureInterpolation(void){_error_("not implemented yet");}; 121 124 int VelocityInterpolation(void){_error_("not implemented yet");}; … … 132 135 Gauss* NewGaussBase(int order){_error_("not implemented yet");}; 133 136 ElementVector* NewElementVector(int approximation_enum){_error_("not implemented yet");}; 137 void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");}; 134 138 #ifdef _HAVE_THERMAL_ 135 139 void UpdateBasalConstraintsEnthalpy(void){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r16809 r16810 2213 2213 _assert_(gauss->Enum()==GaussTriaEnum); 2214 2214 this->GetNodalFunctions(basis,(GaussTria*)gauss); 2215 2216 } 2217 /*}}}*/ 2218 /*FUNCTION Tria::NodalFunctionsDerivatives{{{*/ 2219 void Tria::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){ 2220 2221 _assert_(gauss->Enum()==GaussTriaEnum); 2222 this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTria*)gauss); 2215 2223 2216 2224 } -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r16807 r16810 269 269 void JacobianDeterminant(IssmDouble* pJdet, IssmDouble* xyz_list,Gauss* gauss); 270 270 void JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){_error_("not implemented yet");}; 271 IssmDouble MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");}; 271 272 Gauss* NewGauss(void); 272 273 Gauss* NewGauss(int order); … … 274 275 ElementVector* NewElementVector(int approximation_enum); 275 276 void NodalFunctions(IssmDouble* basis,Gauss* gauss); 277 void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 276 278 void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss); 277 279 void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss); 278 280 void SetClone(int* minranks); 279 281 Seg* SpawnSeg(int index1,int index2); 282 IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");}; 280 283 void SurfaceNormal(IssmDouble* surface_normal, IssmDouble xyz_list[3][3]); 281 284 void TransformLoadVectorCoord(ElementVector* pe,int transformenum); … … 287 290 void TransformSolutionCoord(IssmDouble* values,int numnodes,int transformenum){_error_("not implemented yet");}; 288 291 void TransformSolutionCoord(IssmDouble* values,int numnodes,int* transformenum_list){_error_("not implemented yet");}; 292 void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");}; 289 293 #ifdef _HAVE_STRESSBALANCE_ 290 294 ElementMatrix* CreateKMatrixStressbalanceSSA(void);
Note:
See TracChangeset
for help on using the changeset viewer.