Changeset 70
- Timestamp:
- 04/27/09 16:50:16 (16 years ago)
- Location:
- issm/trunk/src/c/objects
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Tria.cpp
r46 r70 33 33 34 34 Tria::Tria(int tria_id,int tria_mid,int tria_mparid,int tria_node_ids[3],double tria_h[3],double tria_s[3],double tria_b[3],double tria_k[3], 35 int tria_friction_type,double tria_p,double tria_q,int tria_shelf,double tria_meanvel,double tria_epsvel ){35 int tria_friction_type,double tria_p,double tria_q,int tria_shelf,double tria_meanvel,double tria_epsvel,double tria_viscosity_overshoot){ 36 36 37 37 int i; … … 60 60 epsvel=tria_epsvel; 61 61 onbed=1; 62 viscosity_overshoot=tria_viscosity_overshoot; 62 63 63 64 return; … … 88 89 printf(" epsvel: %g\n",epsvel); 89 90 printf(" onbed: %i\n",onbed); 91 printf(" viscosity_overshoot=%g\n",viscosity_overshoot); 90 92 printf(" nodes: \n"); 91 93 if(nodes[0])nodes[0]->Echo(); … … 134 136 memcpy(marshalled_dataset,&meanvel,sizeof(meanvel));marshalled_dataset+=sizeof(meanvel); 135 137 memcpy(marshalled_dataset,&epsvel,sizeof(epsvel));marshalled_dataset+=sizeof(epsvel); 138 memcpy(marshalled_dataset,&viscosity_overshoot,sizeof(viscosity_overshoot));marshalled_dataset+=sizeof(viscosity_overshoot); 136 139 137 140 *pmarshalled_dataset=marshalled_dataset; … … 161 164 +sizeof(meanvel) 162 165 +sizeof(epsvel) 166 +sizeof(viscosity_overshoot) 163 167 +sizeof(int); //sizeof(int) for enum type 164 168 } … … 200 204 memcpy(&meanvel,marshalled_dataset,sizeof(meanvel));marshalled_dataset+=sizeof(meanvel); 201 205 memcpy(&epsvel,marshalled_dataset,sizeof(epsvel));marshalled_dataset+=sizeof(epsvel); 206 memcpy(&viscosity_overshoot,marshalled_dataset,sizeof(viscosity_overshoot));marshalled_dataset+=sizeof(viscosity_overshoot); 202 207 203 208 /*nodes and materials are not pointing to correct objects anymore:*/ … … 292 297 /* material data: */ 293 298 double viscosity; //viscosity 299 double newviscosity; //viscosity 300 double oldviscosity; //viscosity 294 301 295 302 /* strain rate: */ 296 303 double epsilon[3]; /* epsilon=[exx,eyy,exy];*/ 304 double oldepsilon[3]; /* oldepsilon=[exx,eyy,exy];*/ 297 305 298 306 /* matrices: */ … … 318 326 /*input parameters for structural analysis (diagnostic): */ 319 327 double* velocity_param=NULL; 328 double* oldvelocity_param=NULL; 320 329 double vxvy_list[numgrids][2]; 330 double oldvxvy_list[numgrids][2]; 321 331 double thickness; 322 332 … … 331 341 /*recover extra inputs from users, at current convergence iteration: */ 332 342 velocity_param=ParameterInputsRecover(inputs,"velocity"); 343 oldvelocity_param=ParameterInputsRecover(inputs,"old_velocity"); 333 344 334 345 /* Get node coordinates and dof list: */ … … 338 349 /* Set Ke_gg to 0: */ 339 350 for(i=0;i<numdofs;i++) for(j=0;j<numdofs;j++) Ke_gg[i][j]=0.0; 340 341 351 342 352 /*Initialize vxvy_list: */ … … 349 359 vxvy_list[i][0]=0; 350 360 vxvy_list[i][1]=0; 361 } 362 363 if(oldvelocity_param){ 364 oldvxvy_list[i][0]=oldvelocity_param[doflist[i*numberofdofspernode+0]]; 365 oldvxvy_list[i][1]=oldvelocity_param[doflist[i*numberofdofspernode+1]]; 366 } 367 else{ 368 oldvxvy_list[i][0]=0; 369 oldvxvy_list[i][1]=0; 351 370 } 352 371 } … … 443 462 /*Get strain rate from velocity: */ 444 463 GetStrainRate(&epsilon[0],&vxvy_list[0][0],&xyz_list[0][0],gauss_l1l2l3); 464 GetStrainRate(&oldepsilon[0],&oldvxvy_list[0][0],&xyz_list[0][0],gauss_l1l2l3); 445 465 446 466 /*Get viscosity: */ 447 467 matice->GetViscosity2d(&viscosity, &epsilon[0]); 468 matice->GetViscosity2d(&oldviscosity, &oldepsilon[0]); 448 469 449 470 /* Get Jacobian determinant: */ … … 452 473 /* Build the D matrix: we plug the gaussian weight, the thickness, the viscosity, and the jacobian determinant 453 474 onto this scalar matrix, so that we win some computational time: */ 454 D_scalar=viscosity*thickness*gauss_weight*Jdet; 475 newviscosity=viscosity+viscosity_overshoot*(viscosity-oldviscosity); 476 D_scalar=newviscosity*thickness*gauss_weight*Jdet; 477 455 478 for (i=0;i<3;i++){ 456 479 D[i][i]=D_scalar; -
issm/trunk/src/c/objects/Tria.h
r46 r70 43 43 double epsvel; /*!minimum velocity to avoid infinite velocity ratios*/ 44 44 int onbed; 45 double viscosity_overshoot; 45 46 46 47 public: … … 48 49 Tria(); 49 50 Tria(int id,int mid,int mparid,int node_ids[3],double h[3],double s[3],double b[3],double k[3], 50 int friction_type,double p,double q,int shelf,double meanvel,double epsvel );51 int friction_type,double p,double q,int shelf,double meanvel,double epsvel,double viscosity_overshoot); 51 52 ~Tria(); 52 53
Note:
See TracChangeset
for help on using the changeset viewer.