Ignore:
Timestamp:
07/05/13 09:22:25 (12 years ago)
Author:
seroussi
Message:

NEW: working on Stokes stabilized

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp

    r15425 r15436  
    275275        /*Build B: */
    276276        for (i=0;i<NUMNODESMINI;i++){
    277                 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i)=dh1dh7[0][i]; //B[0][NDOF4*i]=dh1dh6[0][i];
    278                 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1)=0;
    279                 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+2)=0;
    280                 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i)=0;
    281                 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+1)=dh1dh7[1][i];
    282                 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+2)=0;
    283                 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i)=0;
    284                 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+1)=0;
    285                 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+2)=dh1dh7[2][i];
    286                 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i)=(float).5*dh1dh7[1][i];
    287                 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+1)=(float).5*dh1dh7[0][i];
    288                 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+2)=0;
    289                 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i)=(float).5*dh1dh7[2][i];
    290                 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+1)=0;
    291                 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+2)=(float).5*dh1dh7[0][i];
    292                 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i)=0;
    293                 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+1)=(float).5*dh1dh7[2][i];
    294                 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+2)=(float).5*dh1dh7[1][i];
    295                 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i)=0;
    296                 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+1)=0;
    297                 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+2)=0;
    298                 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i)=dh1dh7[0][i];
    299                 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+1)=dh1dh7[1][i];
    300                 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+2)=dh1dh7[2][i];
     277                B[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+0] = dh1dh7[0][i+0]; //B[0][NDOF4*i+0] = dh1dh6[0][i+0];
     278                B[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1] = 0.;
     279                B[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+2] = 0.;
     280                B[(NDOF4*NUMNODESP1+3)*1+NDOF4*i+0] = 0.;
     281                B[(NDOF4*NUMNODESP1+3)*1+NDOF4*i+1] = dh1dh7[1][i+0];
     282                B[(NDOF4*NUMNODESP1+3)*1+NDOF4*i+2] = 0.;
     283                B[(NDOF4*NUMNODESP1+3)*2+NDOF4*i+0] = 0.;
     284                B[(NDOF4*NUMNODESP1+3)*2+NDOF4*i+1] = 0.;
     285                B[(NDOF4*NUMNODESP1+3)*2+NDOF4*i+2] = dh1dh7[2][i+0];
     286                B[(NDOF4*NUMNODESP1+3)*3+NDOF4*i+0] = (float).5*dh1dh7[1][i+0];
     287                B[(NDOF4*NUMNODESP1+3)*3+NDOF4*i+1] = (float).5*dh1dh7[0][i+0];
     288                B[(NDOF4*NUMNODESP1+3)*3+NDOF4*i+2] = 0.;
     289                B[(NDOF4*NUMNODESP1+3)*4+NDOF4*i+0] = (float).5*dh1dh7[2][i+0];
     290                B[(NDOF4*NUMNODESP1+3)*4+NDOF4*i+1] = 0.;
     291                B[(NDOF4*NUMNODESP1+3)*4+NDOF4*i+2] = (float).5*dh1dh7[0][i+0];
     292                B[(NDOF4*NUMNODESP1+3)*5+NDOF4*i+0] = 0.;
     293                B[(NDOF4*NUMNODESP1+3)*5+NDOF4*i+1] = (float).5*dh1dh7[2][i+0];
     294                B[(NDOF4*NUMNODESP1+3)*5+NDOF4*i+2] = (float).5*dh1dh7[1][i+0];
     295                B[(NDOF4*NUMNODESP1+3)*6+NDOF4*i+0] = 0.;
     296                B[(NDOF4*NUMNODESP1+3)*6+NDOF4*i+1] = 0.;
     297                B[(NDOF4*NUMNODESP1+3)*6+NDOF4*i+2] = 0.;
     298                B[(NDOF4*NUMNODESP1+3)*7+NDOF4*i+0] = dh1dh7[0][i+0];
     299                B[(NDOF4*NUMNODESP1+3)*7+NDOF4*i+1] = dh1dh7[1][i+0];
     300                B[(NDOF4*NUMNODESP1+3)*7+NDOF4*i+2] = dh1dh7[2][i+0];
    301301        }
    302302
     
    338338        /*Get dh1dh7 in actual coordinate system: */
    339339        GetNodalFunctionsP1Derivatives(&dh1dh6[0][0],xyz_list, gauss);
    340         GetNodalFunctionsP1(l1l6, gauss);
     340        GetNodalFunctionsP1(&l1l6[0], gauss);
    341341
    342342        /*Build B: */
    343343        for (i=0;i<NUMNODESP1;i++){
    344                 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i)=dh1dh6[0][i]; //B[0][NDOF4*i]=dh1dh6[0][i];
    345                 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1)=0.;
    346                 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+2)=0.;
    347                 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i)=0.;
    348                 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+1)=dh1dh6[1][i];
    349                 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+2)=0.;
    350                 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i)=0.;
    351                 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+1)=0.;
    352                 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+2)=dh1dh6[2][i];
    353                 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i)=.5*dh1dh6[1][i];
    354                 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+1)=.5*dh1dh6[0][i];
    355                 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+2)=0.;
    356                 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i)=.5*dh1dh6[2][i];
    357                 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+1)=0.;
    358                 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+2)=.5*dh1dh6[0][i];
    359                 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i)=0.;
    360                 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+1)=.5*dh1dh6[2][i];
    361                 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+2)=.5*dh1dh6[1][i];
    362                 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i)=0.;
    363                 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+1)=0.;
    364                 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+2)=0.;
    365                 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i)=dh1dh6[0][i];
    366                 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+1)=dh1dh6[1][i];
    367                 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+2)=dh1dh6[2][i];
     344                *(B+(NDOF4*NUMNODESP1)*0+NDOF4*i)=dh1dh6[0][i]; //B[0][NDOF4*i]=dh1dh6[0][i];
     345                *(B+(NDOF4*NUMNODESP1)*0+NDOF4*i+1)=0.;
     346                *(B+(NDOF4*NUMNODESP1)*0+NDOF4*i+2)=0.;
     347                *(B+(NDOF4*NUMNODESP1)*1+NDOF4*i)=0.;
     348                *(B+(NDOF4*NUMNODESP1)*1+NDOF4*i+1)=dh1dh6[1][i];
     349                *(B+(NDOF4*NUMNODESP1)*1+NDOF4*i+2)=0.;
     350                *(B+(NDOF4*NUMNODESP1)*2+NDOF4*i)=0.;
     351                *(B+(NDOF4*NUMNODESP1)*2+NDOF4*i+1)=0.;
     352                *(B+(NDOF4*NUMNODESP1)*2+NDOF4*i+2)=dh1dh6[2][i];
     353                *(B+(NDOF4*NUMNODESP1)*3+NDOF4*i)=.5*dh1dh6[1][i];
     354                *(B+(NDOF4*NUMNODESP1)*3+NDOF4*i+1)=.5*dh1dh6[0][i];
     355                *(B+(NDOF4*NUMNODESP1)*3+NDOF4*i+2)=0.;
     356                *(B+(NDOF4*NUMNODESP1)*4+NDOF4*i)=.5*dh1dh6[2][i];
     357                *(B+(NDOF4*NUMNODESP1)*4+NDOF4*i+1)=0.;
     358                *(B+(NDOF4*NUMNODESP1)*4+NDOF4*i+2)=.5*dh1dh6[0][i];
     359                *(B+(NDOF4*NUMNODESP1)*5+NDOF4*i)=0.;
     360                *(B+(NDOF4*NUMNODESP1)*5+NDOF4*i+1)=.5*dh1dh6[2][i];
     361                *(B+(NDOF4*NUMNODESP1)*5+NDOF4*i+2)=.5*dh1dh6[1][i];
     362                *(B+(NDOF4*NUMNODESP1)*6+NDOF4*i)=0.;
     363                *(B+(NDOF4*NUMNODESP1)*6+NDOF4*i+1)=0.;
     364                *(B+(NDOF4*NUMNODESP1)*6+NDOF4*i+2)=0.;
     365                *(B+(NDOF4*NUMNODESP1)*7+NDOF4*i)=dh1dh6[0][i];
     366                *(B+(NDOF4*NUMNODESP1)*7+NDOF4*i+1)=dh1dh6[1][i];
     367                *(B+(NDOF4*NUMNODESP1)*7+NDOF4*i+2)=dh1dh6[2][i];
     368                _assert_((NDOF4*NUMNODESP1)*7+NDOF4*i+2<8*24);
    368369        }
    369370
    370371        for (i=0;i<NUMNODESP1;i++){ //last column not for the bubble function
    371                 *(B+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+3)=0.;
    372                 *(B+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+3)=0.;
    373                 *(B+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+3)=0.;
    374                 *(B+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+3)=0.;
    375                 *(B+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+3)=0.;
    376                 *(B+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+3)=0.;
    377                 *(B+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+3)=l1l6[i];
    378                 *(B+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+3)=0.;
     372                B[(NDOF4*NUMNODESP1)*0+NDOF4*i+3]=0.;
     373                B[(NDOF4*NUMNODESP1)*1+NDOF4*i+3]=0.;
     374                B[(NDOF4*NUMNODESP1)*2+NDOF4*i+3]=0.;
     375                B[(NDOF4*NUMNODESP1)*3+NDOF4*i+3]=0.;
     376                B[(NDOF4*NUMNODESP1)*4+NDOF4*i+3]=0.;
     377                B[(NDOF4*NUMNODESP1)*5+NDOF4*i+3]=0.;
     378                B[(NDOF4*NUMNODESP1)*6+NDOF4*i+3]=l1l6[i];
     379                B[(NDOF4*NUMNODESP1)*7+NDOF4*i+3]=0.;
     380                _assert_(((NDOF4*NUMNODESP1)*7+NDOF4*i+3)<8*24);
    379381        }
    380382
     
    476478        /*B_primeuild B_prime: */
    477479        for (i=0;i<NUMNODESP1;i++){
    478                 *(B_prime+(NDOF4*NUMNODESP1+3)*0+NDOF4*i)=dh1dh6[0][i]; //B_prime[0][NDOF4*i]=dh1dh6[0][i];
    479                 *(B_prime+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1)=0.;
    480                 *(B_prime+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+2)=0.;
    481                 *(B_prime+(NDOF4*NUMNODESP1+3)*1+NDOF4*i)=0.;
    482                 *(B_prime+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+1)=dh1dh6[1][i];
    483                 *(B_prime+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+2)=0.;
    484                 *(B_prime+(NDOF4*NUMNODESP1+3)*2+NDOF4*i)=0.;
    485                 *(B_prime+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+1)=0.;
    486                 *(B_prime+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+2)=dh1dh6[2][i];
    487                 *(B_prime+(NDOF4*NUMNODESP1+3)*3+NDOF4*i)=dh1dh6[1][i];
    488                 *(B_prime+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+1)=dh1dh6[0][i];
    489                 *(B_prime+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+2)=0.;
    490                 *(B_prime+(NDOF4*NUMNODESP1+3)*4+NDOF4*i)=dh1dh6[2][i];
    491                 *(B_prime+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+1)=0.;
    492                 *(B_prime+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+2)=dh1dh6[0][i];
    493                 *(B_prime+(NDOF4*NUMNODESP1+3)*5+NDOF4*i)=0.;
    494                 *(B_prime+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+1)=dh1dh6[2][i];
    495                 *(B_prime+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+2)=dh1dh6[1][i];
    496                 *(B_prime+(NDOF4*NUMNODESP1+3)*6+NDOF4*i)=dh1dh6[0][i];
    497                 *(B_prime+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+1)=dh1dh6[1][i];
    498                 *(B_prime+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+2)=dh1dh6[2][i];
    499                 *(B_prime+(NDOF4*NUMNODESP1+3)*7+NDOF4*i)=0.;
    500                 *(B_prime+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+1)=0.;
    501                 *(B_prime+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+2)=0.;
     480                *(B_prime+(NDOF4*NUMNODESP1)*0+NDOF4*i)=dh1dh6[0][i]; //B_prime[0][NDOF4*i]=dh1dh6[0][i];
     481                *(B_prime+(NDOF4*NUMNODESP1)*0+NDOF4*i+1)=0.;
     482                *(B_prime+(NDOF4*NUMNODESP1)*0+NDOF4*i+2)=0.;
     483                *(B_prime+(NDOF4*NUMNODESP1)*1+NDOF4*i)=0.;
     484                *(B_prime+(NDOF4*NUMNODESP1)*1+NDOF4*i+1)=dh1dh6[1][i];
     485                *(B_prime+(NDOF4*NUMNODESP1)*1+NDOF4*i+2)=0.;
     486                *(B_prime+(NDOF4*NUMNODESP1)*2+NDOF4*i)=0.;
     487                *(B_prime+(NDOF4*NUMNODESP1)*2+NDOF4*i+1)=0.;
     488                *(B_prime+(NDOF4*NUMNODESP1)*2+NDOF4*i+2)=dh1dh6[2][i];
     489                *(B_prime+(NDOF4*NUMNODESP1)*3+NDOF4*i)=dh1dh6[1][i];
     490                *(B_prime+(NDOF4*NUMNODESP1)*3+NDOF4*i+1)=dh1dh6[0][i];
     491                *(B_prime+(NDOF4*NUMNODESP1)*3+NDOF4*i+2)=0.;
     492                *(B_prime+(NDOF4*NUMNODESP1)*4+NDOF4*i)=dh1dh6[2][i];
     493                *(B_prime+(NDOF4*NUMNODESP1)*4+NDOF4*i+1)=0.;
     494                *(B_prime+(NDOF4*NUMNODESP1)*4+NDOF4*i+2)=dh1dh6[0][i];
     495                *(B_prime+(NDOF4*NUMNODESP1)*5+NDOF4*i)=0.;
     496                *(B_prime+(NDOF4*NUMNODESP1)*5+NDOF4*i+1)=dh1dh6[2][i];
     497                *(B_prime+(NDOF4*NUMNODESP1)*5+NDOF4*i+2)=dh1dh6[1][i];
     498                *(B_prime+(NDOF4*NUMNODESP1)*6+NDOF4*i)=dh1dh6[0][i];
     499                *(B_prime+(NDOF4*NUMNODESP1)*6+NDOF4*i+1)=dh1dh6[1][i];
     500                *(B_prime+(NDOF4*NUMNODESP1)*6+NDOF4*i+2)=dh1dh6[2][i];
     501                *(B_prime+(NDOF4*NUMNODESP1)*7+NDOF4*i)=0.;
     502                *(B_prime+(NDOF4*NUMNODESP1)*7+NDOF4*i+1)=0.;
     503                *(B_prime+(NDOF4*NUMNODESP1)*7+NDOF4*i+2)=0.;
     504                _assert_((NDOF4*NUMNODESP1)*7+NDOF4*i+2<8*24);
    502505        }
    503506
    504507        for (i=0;i<NUMNODESP1;i++){ //last column
    505                 *(B_prime+(NDOF4*NUMNODESP1+3)*0+NDOF4*i+3)=0.;
    506                 *(B_prime+(NDOF4*NUMNODESP1+3)*1+NDOF4*i+3)=0.;
    507                 *(B_prime+(NDOF4*NUMNODESP1+3)*2+NDOF4*i+3)=0.;
    508                 *(B_prime+(NDOF4*NUMNODESP1+3)*3+NDOF4*i+3)=0.;
    509                 *(B_prime+(NDOF4*NUMNODESP1+3)*4+NDOF4*i+3)=0.;
    510                 *(B_prime+(NDOF4*NUMNODESP1+3)*5+NDOF4*i+3)=0.;
    511                 *(B_prime+(NDOF4*NUMNODESP1+3)*6+NDOF4*i+3)=0.;
    512                 *(B_prime+(NDOF4*NUMNODESP1+3)*7+NDOF4*i+3)=l1l6[i];
     508                *(B_prime+(NDOF4*NUMNODESP1)*0+NDOF4*i+3)=0.;
     509                *(B_prime+(NDOF4*NUMNODESP1)*1+NDOF4*i+3)=0.;
     510                *(B_prime+(NDOF4*NUMNODESP1)*2+NDOF4*i+3)=0.;
     511                *(B_prime+(NDOF4*NUMNODESP1)*3+NDOF4*i+3)=0.;
     512                *(B_prime+(NDOF4*NUMNODESP1)*4+NDOF4*i+3)=0.;
     513                *(B_prime+(NDOF4*NUMNODESP1)*5+NDOF4*i+3)=0.;
     514                *(B_prime+(NDOF4*NUMNODESP1)*6+NDOF4*i+3)=0.;
     515                *(B_prime+(NDOF4*NUMNODESP1)*7+NDOF4*i+3)=l1l6[i];
     516                _assert_((NDOF4*NUMNODESP1)*7+NDOF4*i+2<8*24);
    513517        }
    514518
     
    10871091        if(*Jdet<0) _error_("negative jacobian determinant!");
    10881092}
    1089 /*}}}*/
     1093/*}}}*
    10901094/*FUNCTION PentaRef::GetSegmentJacobianDeterminant{{{*/
    10911095void PentaRef::GetSegmentJacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,GaussPenta* gauss){
Note: See TracChangeset for help on using the changeset viewer.