Changeset 11262


Ignore:
Timestamp:
01/31/12 09:15:07 (13 years ago)
Author:
seroussi
Message:

started to work on enthalpy

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/objects/Elements/Penta.cpp

    r11260 r11262  
    32073207        int        i,j,ig,found=0;
    32083208        double     Jdet,u,v,w,um,vm,wm;
     3209        double     h,hx,hy,hz,vx,vy,vz,vel;
    32093210        double     gravity,rho_ice,rho_water;
    32103211        double     epsvel=2.220446049250313e-16;
     
    32143215        double     tau_parameter,diameter;
    32153216        double     xyz_list[NUMVERTICES][3];
    3216         double     B[3][numdof];
    3217         double     Bprime[3][numdof];
    32183217        double     B_conduct[3][numdof];
    32193218        double     B_advec[3][numdof];
    3220         double     B_stab[2][numdof];
    32213219        double     Bprime_advec[3][numdof];
    32223220        double     L[numdof];
     
    32253223        double     D_scalar_trans,D_scalar_stab;
    32263224        double     D[3][3];
    3227         double     K[2][2]={0.0};
     3225        double     K[3][3]={0.0};
    32283226        Tria*      tria=NULL;
    32293227        GaussPenta *gauss=NULL;
     
    32623260                /*Conduction: */ 
    32633261                /*Need to change that depending on enthalpy value -> cold or temperate ice: */ 
    3264 
    32653262                GetBConduct(&B_conduct[0][0],&xyz_list[0][0],gauss);
    32663263
     
    32813278
    32823279                /*Advection: */
    3283 
    32843280                GetBAdvec(&B_advec[0][0],&xyz_list[0][0],gauss);
    32853281                GetBprimeAdvec(&Bprime_advec[0][0],&xyz_list[0][0],gauss);
     
    32913287                vym_input->GetInputValue(&vm,gauss);
    32923288                vzm_input->GetInputValue(&wm,gauss);
     3289                vx=u-um; vy=v-vm; vz=w-wm;
    32933290
    32943291                D_scalar_advec=gauss->weight*Jdet;
    32953292                if(dt) D_scalar_advec=D_scalar_advec*dt;
    32963293
    3297                 D[0][0]=D_scalar_advec*(u-um);D[0][1]=0;                    D[0][2]=0;
    3298                 D[1][0]=0;                    D[1][1]=D_scalar_advec*(v-vm);D[1][2]=0;
    3299                 D[2][0]=0;                    D[2][1]=0;                    D[2][2]=D_scalar_advec*(w-wm);
     3294                D[0][0]=D_scalar_advec*vx;D[0][1]=0;                D[0][2]=0;
     3295                D[1][0]=0;                D[1][1]=D_scalar_advec*vy;D[1][2]=0;
     3296                D[2][0]=0;                D[2][1]=0;                D[2][2]=D_scalar_advec*vz;
    33003297
    33013298                TripleMultiply(&B_advec[0][0],3,numdof,1,
     
    33053302
    33063303                /*Transient: */
    3307 
    33083304                if(dt){
    33093305                        GetNodalFunctionsP1(&L[0], gauss);
     
    33183314
    33193315                /*Artifficial diffusivity*/
    3320 
    33213316                if(stabilization==1){
    33223317                        /*Build K: */
    3323                         D_scalar_stab=gauss->weight*Jdet/(pow(u-um,2)+pow(v-vm,2)+epsvel);
     3318                        GetElementSizes(&hx,&hy,&hz);
     3319                        vel=sqrt(pow(vx,2.)+pow(vy,2.)+pow(vz,2.))+1.e-14;
     3320                        h=sqrt( pow(hx*vx/vel,2.) + pow(hy*vy/vel,2.) + pow(hz*vz/vel,2.));
     3321                        K[0][0]=h/(2*vel)*fabs(vx*vx);  K[0][1]=h/(2*vel)*fabs(vx*vy); K[0][2]=h/(2*vel)*fabs(vx*vz);
     3322                        K[1][0]=h/(2*vel)*fabs(vy*vx);  K[1][1]=h/(2*vel)*fabs(vy*vy); K[1][2]=h/(2*vel)*fabs(vy*vz);
     3323                        K[2][0]=h/(2*vel)*fabs(vz*vx);  K[2][1]=h/(2*vel)*fabs(vz*vy); K[2][2]=h/(2*vel)*fabs(vz*vz);
     3324                        D_scalar_stab=gauss->weight*Jdet;
    33243325                        if(dt) D_scalar_stab=D_scalar_stab*dt;
    3325                         K[0][0]=D_scalar_stab*pow(u,2);       K[0][1]=D_scalar_stab*fabs(u)*fabs(v);
    3326                         K[1][0]=D_scalar_stab*fabs(u)*fabs(v);K[1][1]=D_scalar_stab*pow(v,2);
    3327                         _error_("TO BE RECODED");
    3328 
    3329                         //GetBArtdiff(&B_stab[0][0],&xyz_list[0][0],gauss);
    3330 
    3331                         TripleMultiply(&B_stab[0][0],2,numdof,1,
    3332                                                 &K[0][0],2,2,0,
    3333                                                 &B_stab[0][0],2,numdof,0,
     3326                        for(i=0;i<3;i++) for(j=0;j<3;j++) K[i][j] = D_scalar_stab*K[i][j];
     3327
     3328                        GetBprimeAdvec(&Bprime_advec[0][0],&xyz_list[0][0],gauss);
     3329
     3330                        TripleMultiply(&Bprime_advec[0][0],3,numdof,1,
     3331                                                &K[0][0],3,3,0,
     3332                                                &Bprime_advec[0][0],3,numdof,0,
    33343333                                                &Ke->values[0],1);
    33353334                }
    33363335                else if(stabilization==2){
    3337 
    33383336                        GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss);
    3339 
    33403337                        tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,rho_ice,heatcapacity,thermalconductivity);
    33413338
     
    34563453        double     tau_parameter,diameter;
    34573454        double     xyz_list[NUMVERTICES][3];
    3458         double     B[3][numdof];
    3459         double     Bprime[3][numdof];
    34603455        double     B_conduct[3][numdof];
    34613456        double     B_advec[3][numdof];
    3462         double     B_stab[2][numdof];
    34633457        double     Bprime_advec[3][numdof];
    34643458        double     L[numdof];
     
    35373531
    35383532                /*Transient: */
    3539 
    35403533                if(dt){
    35413534                        GetNodalFunctionsP1(&L[0], gauss);
     
    35503543
    35513544                /*Artifficial diffusivity*/
    3552 
    35533545                if(stabilization==1){
    35543546                        /*Build K: */
Note: See TracChangeset for help on using the changeset viewer.