Changeset 5785
- Timestamp:
- 09/13/10 15:59:12 (15 years ago)
- Location:
- issm/trunk/src/c/objects/Elements
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/Penta.cpp
r5772 r5785 3577 3577 double du[3]; 3578 3578 double dv[3]; 3579 double dudx,dvdy; 3579 double dw[3]; 3580 double dudx,dvdy,dwdz; 3581 3582 /*Get some parameters*/ 3583 int approximation; 3580 3584 3581 3585 /*If on water, skip: */ 3582 3586 if(IsOnWater())return; 3587 inputs->GetParameterValue(&approximation,ApproximationEnum); 3583 3588 3584 3589 /*If we are on the bedrock, spawn a tria on the bedrock, and use it to build the … … 3598 3603 Input* vx_input=inputs->GetInput(VxEnum); ISSMASSERT(vx_input); 3599 3604 Input* vy_input=inputs->GetInput(VyEnum); ISSMASSERT(vy_input); 3605 Input* vz_input=NULL; 3606 if(approximation==PattynStokesApproximationEnum){ 3607 vz_input=inputs->GetInput(VzEnum); ISSMASSERT(vz_input); 3608 } 3600 3609 3601 3610 /* Start looping on the number of gaussian points: */ … … 3608 3617 vx_input->GetParameterDerivativeValue(&du[0],&xyz_list[0][0],gauss); 3609 3618 vy_input->GetParameterDerivativeValue(&dv[0],&xyz_list[0][0],gauss); 3619 if(approximation==PattynStokesApproximationEnum){ 3620 vz_input->GetParameterDerivativeValue(&dw[0],&xyz_list[0][0],gauss); 3621 dwdz=dw[2]; 3622 } 3623 else dwdz=0; 3610 3624 dudx=du[0]; 3611 3625 dvdy=dv[1]; … … 3619 3633 /*Build pe_g_gaussian vector: */ 3620 3634 for (i=0;i<NUMVERTICES;i++){ 3621 pe_g_gaussian[i]=(dudx+dvdy )*Jdet*gauss->weight*l1l6[i];3635 pe_g_gaussian[i]=(dudx+dvdy+dwdz)*Jdet*gauss->weight*l1l6[i]; 3622 3636 } 3623 3637 -
issm/trunk/src/c/objects/Elements/Tria.cpp
r5780 r5785 4137 4137 4138 4138 /*input parameters for structural analysis (diagnostic): */ 4139 double vx,vy ;4139 double vx,vy,vz; 4140 4140 double meltingvalue; 4141 4141 double slope[2]; 4142 4142 double dbdx,dbdy; 4143 int approximation; 4143 4144 4144 4145 /* Get node coordinates and dof list: */ … … 4147 4148 4148 4149 /*Retrieve all inputs we will be needing: */ 4150 inputs->GetParameterValue(&approximation,ApproximationEnum); 4149 4151 Input* melting_input=inputs->GetInput(MeltingRateEnum); ISSMASSERT(melting_input); 4150 4152 Input* vx_input=inputs->GetInput(VxEnum); ISSMASSERT(vx_input); 4151 4153 Input* vy_input=inputs->GetInput(VyEnum); ISSMASSERT(vy_input); 4154 Input* vz_input=NULL; 4155 if(approximation==PattynStokesApproximationEnum){ 4156 vz_input=inputs->GetInput(VzEnum); ISSMASSERT(vz_input); 4157 } 4152 4158 Input* bed_input=inputs->GetInput(BedEnum); ISSMASSERT(bed_input); 4153 4159 … … 4165 4171 vx_input->GetParameterValue(&vx, gauss); 4166 4172 vy_input->GetParameterValue(&vy, gauss); 4173 if(approximation==PattynStokesApproximationEnum){ 4174 vz_input->GetParameterValue(&vz, gauss); 4175 } 4176 else vz=0; 4167 4177 4168 4178 /*Get bed slope: */ … … 4179 4189 /*Build gaussian vector: */ 4180 4190 for(i=0;i<NUMVERTICES;i++){ 4181 pe_g_gaussian[i]=-Jdet*gauss->weight*(vx*dbdx+vy*dbdy- meltingvalue)*L[i];4191 pe_g_gaussian[i]=-Jdet*gauss->weight*(vx*dbdx+vy*dbdy-vz-meltingvalue)*L[i]; 4182 4192 } 4183 4193
Note:
See TracChangeset
for help on using the changeset viewer.