Changeset 17526


Ignore:
Timestamp:
03/24/14 12:04:51 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: working onXTH

File:
1 edited

Legend:

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

    r17525 r17526  
    33873387}/*}}}*/
    33883388ElementVector* StressbalanceAnalysis::CreatePVectorFSViscousXTH(Element* element){/*{{{*/
    3389         _error_("STOP");
    3390 
    3391         int         i,meshtype,dim;
    3392         IssmDouble  Jdet,forcex,forcey,forcez;
     3389
     3390        int         i,tausize,meshtype,dim;
     3391        IssmDouble  Jdet,r;
    33933392        IssmDouble *xyz_list = NULL;
    33943393
     
    33963395        element->FindParam(&meshtype,MeshTypeEnum);
    33973396        switch(meshtype){
    3398                 case Mesh2DverticalEnum: dim = 2; break;
    3399                 case Mesh3DEnum:         dim = 3; break;
    3400                 case Mesh3DtetrasEnum:   dim = 3; break;
     3397                case Mesh2DverticalEnum: dim = 2; tausize = 3; break;
     3398                case Mesh3DEnum:         dim = 3; tausize = 6; break;
     3399                case Mesh3DtetrasEnum:   dim = 3; tausize = 6; break;
    34013400                default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet");
    34023401        }
     3402
     3403        /*FIXME*/
     3404        r = 1.;
    34033405
    34043406        /*Fetch number of nodes and dof for this finite element*/
    34053407        int vnumnodes = element->NumberofNodesVelocity();
    34063408        int pnumnodes = element->NumberofNodesPressure();
     3409        int tnumnodes = element->GetNumberOfVertices();      //Tensors, P1 DG
    34073410
    34083411        /*Prepare coordinate system list*/
     
    34133416
    34143417        /*Initialize vectors*/
    3415         ElementVector* pe     = element->NewElementVector(FSvelocityEnum);
    3416         IssmDouble*    vbasis = xNew<IssmDouble>(vnumnodes);
     3418        ElementVector* pe    = element->NewElementVector(FSvelocityEnum);
     3419        IssmDouble*    Dstar = xNew<IssmDouble>(tausize*tnumnodes);
     3420        IssmDouble*    tau   = xNew<IssmDouble>(tausize);
    34173421
    34183422        /*Retrieve all inputs and parameters*/
    34193423        element->GetVerticesCoordinates(&xyz_list);
    3420         IssmDouble  rho_ice =element->GetMaterialParameter(MaterialsRhoIceEnum);
    3421         IssmDouble  gravity =element->GetMaterialParameter(ConstantsGEnum);
    3422         Input*      loadingforcex_input=element->GetInput(LoadingforceXEnum);  _assert_(loadingforcex_input);
    3423         Input*      loadingforcey_input=element->GetInput(LoadingforceYEnum);  _assert_(loadingforcey_input);
    3424         Input*      loadingforcez_input=NULL;
    3425         if(dim==3){
    3426                 loadingforcez_input=element->GetInput(LoadingforceZEnum);  _assert_(loadingforcez_input);
    3427         }
    34283424
    34293425        /* Start  looping on the number of gaussian points: */
     
    34313427        for(int ig=gauss->begin();ig<gauss->end();ig++){
    34323428                gauss->GaussPoint(ig);
    3433 
    34343429                element->JacobianDeterminant(&Jdet,xyz_list,gauss);
    3435                 element->NodalFunctionsVelocity(vbasis,gauss);
    3436 
    3437                 loadingforcex_input->GetInputValue(&forcex,gauss);
    3438                 loadingforcey_input->GetInputValue(&forcey,gauss);
    3439                 if(dim==3) loadingforcez_input->GetInputValue(&forcez,gauss);
    3440 
    3441                 for(i=0;i<vnumnodes;i++){
    3442                         pe->values[i*dim+0] += +rho_ice*forcex *Jdet*gauss->weight*vbasis[i];
    3443                         pe->values[i*dim+1] += +rho_ice*forcey *Jdet*gauss->weight*vbasis[i];
    3444                         if(dim==3){
    3445                                 pe->values[i*dim+2] += +rho_ice*forcez*Jdet*gauss->weight*vbasis[i];
    3446                                 pe->values[i*dim+2] += -rho_ice*gravity*Jdet*gauss->weight*vbasis[i];
    3447                         }
    3448                         else{
    3449                                 pe->values[i*dim+1] += -rho_ice*gravity*Jdet*gauss->weight*vbasis[i];
    3450                         }
    3451                 }
     3430                _error_("STOP");
    34523431        }
    34533432
     
    34583437        delete gauss;
    34593438        xDelete<int>(cs_list);
    3460         xDelete<IssmDouble>(vbasis);
    34613439        xDelete<IssmDouble>(xyz_list);
    34623440        return pe;
Note: See TracChangeset for help on using the changeset viewer.