Changeset 17539


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

CHG: working on initialization

Location:
issm/trunk-jpl/src/c/analyses
Files:
2 edited

Legend:

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

    r17538 r17539  
    234234                iomodel->FetchDataToInput(elements,PressureEnum,0.);
    235235                if(dakota_analysis)elements->InputDuplicate(PressureEnum,QmuPressureEnum);
     236                if(finiteelement==XTaylorHoodEnum) this->InitializeXTH(elements);
    236237        }
    237238        if(islevelset){
     
    820821        }
    821822}/*}}}*/
     823void StressbalanceAnalysis::InitializeXTH(Elements* elements){/*{{{*/
     824
     825        /*Intermediaries*/
     826        int        meshtype,dim;
     827        IssmDouble dvx[3],dvy[3],dvz[3];
     828        IssmDouble viscosity;
     829        IssmDouble *xyz_list = NULL;
     830
     831        for(int i=0;i<elements->Size();i++){
     832                Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
     833
     834                /*Get problem dimension*/
     835                element->FindParam(&meshtype,MeshTypeEnum);
     836                switch(meshtype){
     837                        case Mesh2DverticalEnum: dim = 2; break;
     838                        case Mesh3DEnum:         dim = 3; break;
     839                        case Mesh3DtetrasEnum:   dim = 3; break;
     840                        default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet");
     841                }
     842
     843                int tnumnodes = element->GetNumberOfVertices();      //Tensors, P1 DG
     844
     845                /*Get inputs and parameters*/
     846                element->GetVerticesCoordinates(&xyz_list);
     847                Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
     848                Input* vy_input=element->GetInput(VyEnum); _assert_(vy_input);
     849                Input* vz_input;
     850                if(dim==3){vz_input=element->GetInput(VzEnum); _assert_(vz_input);}
     851
     852                /*Get d and tau*/
     853                Gauss* gauss = element->NewGauss();
     854                for(int i=0;i<tnumnodes;i++){
     855                        gauss->GaussNode(P1DGEnum,i);
     856
     857                        vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);
     858                        vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);
     859                        if(dim==3){
     860                                vz_input->GetInputDerivativeValue(&dvz[0],xyz_list,gauss);
     861                        }
     862
     863                        _error_("STOP");
     864                        element->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
     865                }
     866
     867                /*Clean up*/
     868                xDelete<IssmDouble>(xyz_list);
     869        }
     870
     871}/*}}}*/
    822872
    823873/*Finite Element Analysis*/
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h

    r17525 r17539  
    1919                void CreateConstraints(Constraints* constraints,IoModel* iomodel);
    2020                void CreateLoads(Loads* loads, IoModel* iomodel);
     21                void InitializeXTH(Elements* elements);
    2122
    2223                /*Finite element Analysis*/
Note: See TracChangeset for help on using the changeset viewer.