Changeset 17537


Ignore:
Timestamp:
03/25/14 11:39:00 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: creating Dstar matrix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r17536 r17537  
    34193419        /*Initialize vectors*/
    34203420        ElementVector* pe      = element->NewElementVector(FSvelocityEnum);
    3421         IssmDouble*    Dstar   = xNew<IssmDouble>((dim*vnumnodes)*(tausize*tnumnodes));
     3421        IssmDouble*    Dstar   = xNewZeroInit<IssmDouble>((dim*vnumnodes)*(tausize*tnumnodes));
    34223422        IssmDouble*    tau     = xNew<IssmDouble>(tausize*tnumnodes);
    34233423        IssmDouble*    d       = xNew<IssmDouble>(tausize*tnumnodes);
     
    34783478
    34793479                /*Create Dstar*/
     3480                /*In dim = 2
     3481                 *
     3482                 *       <----------------- tausize ---------------> x tnumnodes
     3483                 *       |  gamma_ij^x         0       gamma_ij^y  | ^
     3484                 * Dij = |                                         | dim
     3485                 *       |     0          gamma_ij^y   gamma_ij^x  | v
     3486                 *                                                   x
     3487                 *                                                   vnumnodes
     3488                 *
     3489                 *In dim = 3
     3490                 *
     3491                 *       |  gamma_ij^x         0          0         gamma_ij^y  gamma_ij^z      0      |
     3492                 *       |                                                                             |
     3493                 * Dij = |     0          gamma_ij^y      0         gamma_ij^x     0        gamma_ij^z |
     3494                 *       |                                                                             |
     3495                 *       |     0               0      gamma_ij^z        0       gamma_ij^x  gamma_ij^y |
     3496                 *
     3497                 * gamma_ij^x = zeta_j dphi_i/dx
     3498                 *
     3499                 * where:
     3500                 *   - zeta_j is the nodal function for the j^th node of the tensor (P1DG)
     3501                 *   - phi_i  is the nodal function for the i^th node of the velocity (P2)*/
    34803502                element->NodalFunctionsDerivativesVelocity(vdbasis,xyz_list,gauss);
    34813503                element->NodalFunctionsTensor(tbasis,gauss);
    3482 
    3483                 _error_("STOP");
     3504                if(dim==2){
     3505                        for(int i=0;i<vnumnodes;i++){
     3506                                for(int j=0;j<tnumnodes;j++){
     3507                                        Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+0] = tbasis[j]*vdbasis[0*vnumnodes+i];
     3508                                        Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+2] = tbasis[j]*vdbasis[1*vnumnodes+i];
     3509
     3510                                        Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+1] = tbasis[j]*vdbasis[1*vnumnodes+i];
     3511                                        Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+2] = tbasis[j]*vdbasis[0*vnumnodes+i];
     3512                                }
     3513                        }
     3514                }
     3515                else{
     3516                        for(int i=0;i<vnumnodes;i++){
     3517                                for(int j=0;j<tnumnodes;j++){
     3518                                        Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+0] = tbasis[j]*vdbasis[0*vnumnodes+i];
     3519                                        Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+3] = tbasis[j]*vdbasis[1*vnumnodes+i];
     3520                                        Dstar[(i*dim+0)*tausize*tnumnodes + j*tausize+4] = tbasis[j]*vdbasis[2*vnumnodes+i];
     3521
     3522                                        Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+1] = tbasis[j]*vdbasis[1*vnumnodes+i];
     3523                                        Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+3] = tbasis[j]*vdbasis[0*vnumnodes+i];
     3524                                        Dstar[(i*dim+1)*tausize*tnumnodes + j*tausize+5] = tbasis[j]*vdbasis[2*vnumnodes+i];
     3525
     3526                                        Dstar[(i*dim+2)*tausize*tnumnodes + j*tausize+2] = tbasis[j]*vdbasis[2*vnumnodes+i];
     3527                                        Dstar[(i*dim+2)*tausize*tnumnodes + j*tausize+4] = tbasis[j]*vdbasis[0*vnumnodes+i];
     3528                                        Dstar[(i*dim+2)*tausize*tnumnodes + j*tausize+5] = tbasis[j]*vdbasis[1*vnumnodes+i];
     3529                                }
     3530                        }
     3531                }
    34843532        }
    34853533
Note: See TracChangeset for help on using the changeset viewer.