Changeset 20660
- Timestamp:
- 05/28/16 02:55:19 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp
r20658 r20660 321 321 ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceFS(IssmDouble kmax){/*{{{*/ 322 322 323 const int numdof=NUMVERTICES*NDOF3;323 int numdof,numdof2,N; 324 324 IssmDouble penalty_offset; 325 325 326 326 /*Initialize Element vector and return if necessary*/ 327 ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters );327 ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters,FSvelocityEnum); 328 328 329 329 /*recover parameters: */ 330 330 parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum); 331 331 332 //Create elementary matrix: add penalty to 333 Ke->values[0*numdof+0]=+kmax*pow(10.,penalty_offset); 334 Ke->values[0*numdof+3]=-kmax*pow(10.,penalty_offset); 335 Ke->values[3*numdof+0]=-kmax*pow(10.,penalty_offset); 336 Ke->values[3*numdof+3]=+kmax*pow(10.,penalty_offset); 337 338 Ke->values[1*numdof+1]=+kmax*pow(10.,penalty_offset); 339 Ke->values[1*numdof+4]=-kmax*pow(10.,penalty_offset); 340 Ke->values[4*numdof+1]=-kmax*pow(10.,penalty_offset); 341 Ke->values[4*numdof+4]=+kmax*pow(10.,penalty_offset); 342 343 Ke->values[2*numdof+2]=+kmax*pow(10.,penalty_offset); 344 Ke->values[2*numdof+5]=-kmax*pow(10.,penalty_offset); 345 Ke->values[5*numdof+2]=-kmax*pow(10.,penalty_offset); 346 Ke->values[5*numdof+5]=+kmax*pow(10.,penalty_offset); 332 /*Get number of dof for these two nodes*/ 333 numdof =this->nodes[0]->GetNumberOfDofs(FSApproximationEnum,GsetEnum); 334 numdof2=this->nodes[1]->GetNumberOfDofs(FSApproximationEnum,GsetEnum); 335 N=NUMVERTICES*numdof; 336 337 /*Add penalty to Element matrix*/ 338 for(int i=0;i<numdof;i++){ 339 Ke->values[ i*N+i ]=+kmax*pow(10.,penalty_offset); 340 Ke->values[ i*N+numdof+i]=-kmax*pow(10.,penalty_offset); 341 Ke->values[(numdof+i)*N+i ]=-kmax*pow(10.,penalty_offset); 342 Ke->values[(numdof+i)*N+numdof+i]=+kmax*pow(10.,penalty_offset); 343 } 347 344 348 345 /*Clean up and return*/ … … 397 394 numdof =this->nodes[0]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum); 398 395 numdof2=this->nodes[1]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum); 396 _assert_(numdof==numdof2); 399 397 N=NUMVERTICES*numdof; 400 398
Note:
See TracChangeset
for help on using the changeset viewer.