Changeset 20658


Ignore:
Timestamp:
05/27/16 14:40:18 (9 years ago)
Author:
Mathieu Morlighem
Message:

CHG: much more general PenaltyCreateKMatrix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp

    r19254 r20658  
    385385ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceSSAHO(IssmDouble kmax){/*{{{*/
    386386
    387         const int numdof=NUMVERTICES*NDOF2;
     387        int        numdof,numdof2,N;
    388388        IssmDouble penalty_offset;
    389389
     
    394394        parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum);
    395395
    396         //Create elementary matrix: add penalty to
    397         Ke->values[0*numdof+0]=+kmax*pow(10.,penalty_offset);
    398         Ke->values[0*numdof+2]=-kmax*pow(10.,penalty_offset);
    399         Ke->values[2*numdof+0]=-kmax*pow(10.,penalty_offset);
    400         Ke->values[2*numdof+2]=+kmax*pow(10.,penalty_offset);
    401 
    402         Ke->values[1*numdof+1]=+kmax*pow(10.,penalty_offset);
    403         Ke->values[1*numdof+3]=-kmax*pow(10.,penalty_offset);
    404         Ke->values[3*numdof+1]=-kmax*pow(10.,penalty_offset);
    405         Ke->values[3*numdof+3]=+kmax*pow(10.,penalty_offset);
     396        /*Get number of dof for these two nodes*/
     397        numdof =this->nodes[0]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
     398        numdof2=this->nodes[1]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
     399        N=NUMVERTICES*numdof;
     400
     401        /*Add penalty to Element matrix*/
     402        for(int i=0;i<numdof;i++){
     403                Ke->values[         i*N+i       ]=+kmax*pow(10.,penalty_offset);
     404                Ke->values[         i*N+numdof+i]=-kmax*pow(10.,penalty_offset);
     405                Ke->values[(numdof+i)*N+i       ]=-kmax*pow(10.,penalty_offset);
     406                Ke->values[(numdof+i)*N+numdof+i]=+kmax*pow(10.,penalty_offset);
     407        }
    406408
    407409        /*Clean up and return*/
Note: See TracChangeset for help on using the changeset viewer.