Changeset 11242


Ignore:
Timestamp:
01/29/12 20:04:20 (13 years ago)
Author:
Mathieu Morlighem
Message:

Added mesh vertical velocity computation for ALE formulation

Location:
issm/trunk-jpl/src/c
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/UpdateVertexPositionsx/UpdateVertexPositionsx.cpp

    r11197 r11242  
    1212int UpdateVertexPositionsx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters){
    1313
    14         int i;
    15         Vertex* vertex=NULL;
    16         double* thickness=NULL;
    17         double* bed=NULL;
     14        int     i;
     15        Vec     vz        = NULL;
     16        Vertex *vertex    = NULL;
     17        double *thickness = NULL;
     18        double *bed       = NULL;
    1819
    1920        /*get vertex vectors for bed and thickness: */
    20         GetVectorFromInputsx( &thickness,elements,nodes, vertices, loads, materials, parameters, ThicknessEnum,VertexEnum);
    21         GetVectorFromInputsx( &bed      ,elements,nodes, vertices, loads, materials, parameters, BedEnum,      VertexEnum);
     21        GetVectorFromInputsx(&thickness,elements,nodes, vertices, loads, materials, parameters, ThicknessEnum,VertexEnum);
     22        GetVectorFromInputsx(&bed      ,elements,nodes, vertices, loads, materials, parameters, BedEnum,      VertexEnum);
     23
     24        /*Allocate vector*/
     25        vz=NewVec(vertices->NumberOfVertices());
    2226
    2327        /*Update verices new geometry: */
    2428        for (i=0;i<vertices->Size();i++){
    2529                vertex=(Vertex*)vertices->GetObjectByOffset(i);
    26                 vertex->UpdatePosition(thickness,bed);
     30                vertex->UpdatePosition(vz,parameters,thickness,bed);
    2731        }
     32
     33        /*Assemble mesh velocity*/
     34        VecAssemblyBegin(vz);
     35        VecAssemblyEnd(vz);
    2836
    2937        /*Free ressources:*/
    3038        xfree((void**)&thickness);
    3139        xfree((void**)&bed);
     40        VecFree(&vz);
    3241        return 1;
    3342}
  • issm/trunk-jpl/src/c/objects/Vertex.cpp

    r11236 r11242  
    7171        printf("   z: %g\n",z);
    7272        printf("   sigma: %g\n",sigma);
    73         printf("   connectivity: %g\n",connectivity);
     73        printf("   connectivity: %i\n",connectivity);
    7474        printf("   dof: %i\n",dof);
    7575        printf("   clone: %i\n",clone);
     
    273273/*}}}*/
    274274/*FUNCTION Vertex::UpdateVertexPosition {{{1*/
    275 void  Vertex::UpdatePosition(double* thickness,double* bed){
     275void  Vertex::UpdatePosition(Vec vz,Parameters* parameters,double* thickness,double* bed){
     276
     277        double oldz,newz;
     278        double dt,velz;
     279
     280        /*Get time stepping*/
     281        parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    276282
    277283        /*sigma remains constant. z=bed+sigma*thickness*/
    278         this->z=bed[this->dof]+sigma*thickness[this->dof];
    279 
    280 }
    281 /*}}}*/
     284        oldz = this->z;
     285        newz = bed[this->dof]+sigma*thickness[this->dof];
     286        velz = (newz-oldz)/dt;
     287        this->z = newz;
     288
     289        /*put vz in vector*/
     290        VecSetValue(vz,this->Sid(),velz,INSERT_VALUES);
     291}
     292/*}}}*/
  • issm/trunk-jpl/src/c/objects/Vertex.h

    r11001 r11242  
    6363                int   Sid(void);
    6464                int   Connectivity(void);
    65                 void  UpdatePosition(double* thickness,double* bed);
     65                void  UpdatePosition(Vec vz,Parameters* parameters,double* thickness,double* bed);
    6666                /*}}}*/
    6767};
Note: See TracChangeset for help on using the changeset viewer.