Changeset 14648


Ignore:
Timestamp:
04/18/13 12:31:07 (12 years ago)
Author:
Eric.Larour
Message:

CHG: improved gia deflection core

Location:
issm/trunk-jpl/src/c
Files:
4 added
22 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/Makefile.am

    r14633 r14648  
    253253                                        ./modules/VerticesDofx/VerticesDofx.h\
    254254                                        ./modules/VerticesDofx/VerticesDofx.cpp\
     255                                        ./modules/VertexCoordinatesx/VertexCoordinatesx.h\
     256                                        ./modules/VertexCoordinatesx/VertexCoordinatesx.cpp\
    255257                                        ./modules/OutputResultsx/OutputResultsx.h\
    256258                                        ./modules/OutputResultsx/OutputResultsx.cpp\
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r14632 r14648  
    15421542#endif
    15431543#ifdef _HAVE_GIA_
    1544 void FemModel::Deflection(Vector<IssmDouble>* wg){ /*{{{*/
     1544void FemModel::Deflection(Vector<IssmDouble>* wg,IssmDouble* x, IssmDouble* y){ /*{{{*/
    15451545
    15461546        int      i;
     
    15521552        for (i=0;i<elements->Size();i++){
    15531553                element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
    1554                 element->Deflection(wg);
    1555         }
    1556 }
    1557 /*}}}*/
    1558 #endif
     1554                element->Deflection(wg,x,y);
     1555        }
     1556}
     1557/*}}}*/
     1558#endif
  • issm/trunk-jpl/src/c/classes/FemModel.h

    r14589 r14648  
    9494                #endif
    9595                #ifdef _HAVE_GIA_
    96                 void Deflection(Vector<IssmDouble>* wg);
     96                void Deflection(Vector<IssmDouble>* wg,IssmDouble* x, IssmDouble* y);
    9797                #endif
    9898                void SystemMatricesx(Matrix<IssmDouble>** pKff, Matrix<IssmDouble>** pKfs, Vector<IssmDouble>** ppf, Vector<IssmDouble>** pdf, IssmDouble* pkmax);
  • issm/trunk-jpl/src/c/classes/objects/Elements/Element.h

    r14589 r14648  
    101101
    102102                #ifdef _HAVE_GIA_
    103                 virtual void   Deflection(Vector<IssmDouble>* wg)=0;
     103                virtual void   Deflection(Vector<IssmDouble>* wg,IssmDouble* x,IssmDouble* y)=0;
    104104                #endif
    105105
  • issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp

    r14605 r14648  
    34873487#ifdef _HAVE_GIA_
    34883488/*FUNCTION Penta::Deflection {{{*/
    3489 void Penta::Deflection(Vector<IssmDouble>* wg){
    3490 
    3491         return;
     3489void Penta::Deflection(Vector<IssmDouble>* wg,IssmDouble* x, IssmDouble* y){
     3490        _error_("GIA deflection not implemented yet!");
    34923491}
    34933492/*}}}*/
  • issm/trunk-jpl/src/c/classes/objects/Elements/Penta.h

    r14605 r14648  
    143143
    144144                #ifdef _HAVE_GIA_
    145                 void   Deflection(Vector<IssmDouble>* wg);
     145                void   Deflection(Vector<IssmDouble>* wg,IssmDouble* x,IssmDouble* y);
    146146                #endif
    147147
  • issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp

    r14617 r14648  
    30413041#ifdef _HAVE_GIA_
    30423042/*FUNCTION Tria::Deflection {{{*/
    3043 void Tria::Deflection(Vector<IssmDouble>* wg){
     3043void Tria::Deflection(Vector<IssmDouble>* wg,IssmDouble* x, IssmDouble* y){
     3044
     3045        int i;
     3046        int gsize;
     3047        IssmDouble xi,yi,ri,re,area;
     3048        IssmDouble x0,y0;
     3049        IssmDouble xyz_list[NUMVERTICES][3];
     3050        IssmDouble he;
     3051
     3052        /*how many dofs are we working with here? */
     3053        gsize=this->nodes[0]->indexing.gsize;
     3054
     3055        /*pull thickness average and area: */
     3056        Input* thickness_input=inputs->GetInput(ThicknessEnum);
     3057        if (!thickness_input)_error_("thickness input needed to compute gia deflection!");
     3058        thickness_input->GetInputAverage(&he);
     3059       
     3060        area=this->GetArea();
     3061
     3062        /*element radius: */
     3063        re=sqrt(area/PI);
     3064
     3065        /*figure out gravity center of our element: */
     3066        GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
     3067        x0=(xyz_list[0][0]+xyz_list[1][0]+xyz_list[2][0])/3.0;
     3068        y0=(xyz_list[0][1]+xyz_list[1][1]+xyz_list[2][1])/3.0;
     3069
     3070        for(i=0;i<gsize;i++){
     3071                xi=x[i]; yi=y[i];
     3072                ri=sqrt(pow(xi-x0,2)+pow(yi-y0,2));
     3073        }
    30443074
    30453075        return;
  • issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h

    r14591 r14648  
    141141
    142142                #ifdef _HAVE_GIA_
    143                 void   Deflection(Vector<IssmDouble>* wg);
     143                void   Deflection(Vector<IssmDouble>* wg,IssmDouble* x,IssmDouble* y);
    144144                #endif
    145145
  • issm/trunk-jpl/src/c/classes/objects/Inputs/BoolInput.h

    r13623 r14648  
    5555                void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, GaussPenta* gauss);
    5656                void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
     57                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
    5758                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
    5859                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/ControlInput.h

    r13623 r14648  
    6060                void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, GaussPenta* gauss);
    6161                void GetInputAverage(IssmDouble* pvalue);
     62                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
    6263                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
    6364                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/DatasetInput.h

    r13623 r14648  
    5454                void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, GaussPenta* gauss){_error_("not implemented yet");};
    5555                void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
     56                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
    5657                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
    5758                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/DoubleInput.h

    r13623 r14648  
    5454                void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, GaussPenta* gauss);
    5555                void GetInputAverage(IssmDouble* pvalue);
     56                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
    5657                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss);
    5758                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss);
  • issm/trunk-jpl/src/c/classes/objects/Inputs/Input.h

    r13623 r14648  
    3434                virtual void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, GaussPenta* gauss)=0;
    3535                virtual void GetInputAverage(IssmDouble* pvalue)=0;
     36                virtual void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes)=0;
    3637                virtual void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss)=0;
    3738                virtual void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss)=0;
  • issm/trunk-jpl/src/c/classes/objects/Inputs/IntInput.h

    r13623 r14648  
    5555                void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, GaussPenta* gauss);
    5656                void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
     57                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
     58
    5759                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
    5860                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/PentaP1Input.h

    r13623 r14648  
    5555                void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, GaussPenta* gauss);
    5656                void GetInputAverage(IssmDouble* pvalue);
     57                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
     58
    5759                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
    5860                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
  • issm/trunk-jpl/src/c/classes/objects/Inputs/TransientInput.cpp

    r13622 r14648  
    247247}
    248248/*}}}*/
     249/*FUNCTION TransientInput::GetInputAverages{{{*/
     250void TransientInput::GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){
     251
     252        _error_("not implemented yet!");
     253
     254}
     255/*}}}*/
    249256
    250257/*Intermediary*/
  • issm/trunk-jpl/src/c/classes/objects/Inputs/TransientInput.h

    r13623 r14648  
    5757                void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, GaussPenta* gauss){_error_("not implemented yet");};
    5858                void GetInputAverage(IssmDouble* pvalue);
     59                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes);
    5960                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
    6061                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss){_error_("not implemented yet");};
     
    8182                void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist);
    8283                void GetValuesPtr(IssmDouble** pvalues,int* pnum_values){_error_("not supported yet");};
    83       void GetTimeValues(IssmDouble* values,IssmDouble time){_error_("not implemented yet");};
     84                void GetTimeValues(IssmDouble* values,IssmDouble time){_error_("not implemented yet");};
    8485                Input* GetTimeInput(IssmDouble time);
    8586                /*}}}*/
  • issm/trunk-jpl/src/c/classes/objects/Inputs/TriaP1Input.h

    r13623 r14648  
    5555                void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, GaussPenta* gauss){_error_("not implemented yet");};
    5656                void GetInputAverage(IssmDouble* pvalue);
     57                void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
    5758                void GetVxStrainRate2d(IssmDouble* epsilonvx,IssmDouble* xyz_list, GaussTria* gauss);
    5859                void GetVyStrainRate2d(IssmDouble* epsilonvy,IssmDouble* xyz_list, GaussTria* gauss);
  • issm/trunk-jpl/src/c/classes/objects/Vertex.cpp

    r14099 r14648  
    212212}
    213213/*}}}*/
     214/*FUNCTION Vertex::VertexCoordinates {{{*/
     215void  Vertex::VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz){
     216
     217        if (this->clone==true) return;
     218
     219        vx->SetValue(this->sid,this->x,INS_VAL);
     220        vy->SetValue(this->sid,this->y,INS_VAL);
     221        vz->SetValue(this->sid,this->z,INS_VAL);
     222
     223        return;
     224}
     225/*}}}*/
  • issm/trunk-jpl/src/c/classes/objects/Vertex.h

    r14090 r14648  
    5555                void  SetClone(int* minranks);
    5656                void  ToXYZ(Matrix<IssmDouble>* matrix);
     57                void  VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz);
    5758};
    5859#endif  /* _VERTEX_H */
  • issm/trunk-jpl/src/c/modules/modules.h

    r14632 r14648  
    100100#include "./UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h"
    101101#include "./VerticesDofx/VerticesDofx.h"
     102#include "./VertexCoordinatesx/VertexCoordinatesx.h"
    102103#include "./VecMergex/VecMergex.h"
    103104#endif
  • issm/trunk-jpl/src/c/solutions/gia_core.cpp

    r14589 r14648  
    1313void gia_core(FemModel* femmodel){
    1414       
     15        int i;
    1516        Vector<IssmDouble>*  wg  = NULL;
     17        IssmDouble*          x   = NULL;
     18        IssmDouble*          y   = NULL;
    1619
    1720        /*parameters: */
     
    3336        wg = new Vector<IssmDouble>(gsize);
    3437
     38        /*first, recover x and y vectors from vertices: */
     39        VertexCoordinatesx(&x,&y,NULL,femmodel->vertices); //no need for z coordinate
     40
    3541        /*call the main module: */
    36         femmodel->Deflection(wg);
     42        femmodel->Deflection(wg,x,y);
    3743       
    3844        InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,wg);
Note: See TracChangeset for help on using the changeset viewer.