source: issm/oecreview/Archive/13393-13976/ISSM-13938-13939.diff@ 14312

Last change on this file since 14312 was 13980, checked in by Mathieu Morlighem, 12 years ago

preparing oecreview for 13393-13976'

File size: 8.3 KB
  • ../trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp

     
    1 /*!\file CreateJacobianMatrixx
    2  * \brief: create system matrices (stiffness matrix, loads vector)
    3  */
    4 
    5 #include "./CreateJacobianMatrixx.h"
    6 #include "../../shared/shared.h"
    7 #include "../../include/include.h"
    8 #include "../../io/io.h"
    9 #include "../../toolkits/toolkits.h"
    10 #include "../../EnumDefinitions/EnumDefinitions.h"
    11 
    12 void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,IssmDouble kmax){
    13 
    14         int      i,connectivity;
    15         int      numberofdofspernode;
    16         int      fsize,configuration_type;
    17         Element *element = NULL;
    18         Load    *load    = NULL;
    19         Matrix<IssmDouble>*  Jff     = NULL;
    20 
    21         /*Checks*/
    22         _assert_(nodes && elements);
    23 
    24         /*Recover some parameters*/
    25         parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
    26         parameters->FindParam(&connectivity,MeshAverageVertexConnectivityEnum);
    27         fsize=nodes->NumberOfDofs(configuration_type,FsetEnum);
    28         numberofdofspernode=nodes->MaxNumDofs(configuration_type,GsetEnum);
    29 
    30         /*Initialize Jacobian Matrix*/
    31         Jff=new Matrix<IssmDouble>(fsize,fsize,connectivity,numberofdofspernode);
    32 
    33         /*Create and assemble matrix*/
    34         for(i=0;i<elements->Size();i++){
    35                 element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
    36                 element->CreateJacobianMatrix(Jff);
    37         }
    38         for (i=0;i<loads->Size();i++){
    39                 load=(Load*)loads->GetObjectByOffset(i);
    40                 if(load->InAnalysis(configuration_type)) load->CreateJacobianMatrix(Jff);
    41                 if(load->InAnalysis(configuration_type)) load->PenaltyCreateJacobianMatrix(Jff,kmax);
    42         }
    43         Jff->Assemble();
    44 
    45         /*Assign output pointer*/
    46         *pJff=Jff;
    47 }
  • ../trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h

     
    1 /*!\file:  CreateJacobianMatrixx.h
    2  * \brief header file for degree of freedoms distribution routines.
    3  */
    4 
    5 #ifndef _CREATEJACOBIANMATRIXX_H
    6 #define _CREATEJACOBIANMATRIXX_H
    7 
    8 #include "../../Container/Container.h"
    9 #include "../../classes/objects/objects.h"
    10 
    11 /* local prototypes: */
    12 void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,IssmDouble kmax);
    13 
    14 #endif  /* _CREATEJACOBIANMATRIXX_H */
  • ../trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp

     
    1414        int         configuration_type;
    1515        int         fsize;
    1616        IssmDouble *ug_serial = NULL;
    17         bool        oldalloc  = false;
     17        bool        oldalloc  = true;
    1818
    1919        /*first figure out fsize: */
    2020        parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
  • ../trunk-jpl/src/c/modules/modules.h

     
    9090#include "./Solverx/Solverx.h"
    9191#include "./SpcNodesx/SpcNodesx.h"
    9292#include "./SurfaceAreax/SurfaceAreax.h"
    93 #include "./CreateJacobianMatrixx/CreateJacobianMatrixx.h"
    9493#include "./TriaSearchx/TriaSearchx.h"
    9594#include "./TriMeshx/TriMeshx.h"
    9695#include "./TriMeshProcessRiftsx/TriMeshProcessRiftsx.h"
  • ../trunk-jpl/src/c/modules/Reduceloadx/Reduceloadx.cpp

     
    1919        int         Kfsm,Kfsn;
    2020        int         global_m,global_n;
    2121        bool        fromlocalsize = true;
     22        bool        oldalloc  = true;
    2223
    2324        if(VerboseModule()) _pprintLine_("   Dirichlet lifting applied to load vector");
    2425
     
    3031
    3132                /*pf = pf - Kfs * y_s;*/
    3233                Kfs->GetLocalSize(&Kfsm,&Kfsn);
    33                 Kfsy_s=new Vector<IssmDouble>(Kfsm,fromlocalsize);
     34                if(oldalloc)
     35                 Kfsy_s=new Vector<IssmDouble>(Kfsm,fromlocalsize);
     36                else
     37                 Kfsy_s=new Vector<IssmDouble>(Kfsm,global_m);
     38
    3439                if (flag_ys0){
    3540
    3641                        /*Create y_s0, full of 0: */
  • ../trunk-jpl/src/c/Makefile.am

     
    298298                                        ./modules/EnumToStringx/EnumToStringx.h\
    299299                                        ./modules/StringToEnumx/StringToEnumx.cpp\
    300300                                        ./modules/StringToEnumx/StringToEnumx.h\
    301                                         ./modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp\
    302                                         ./modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h\
    303301                                        ./modules/ConstraintsStatex/ConstraintsStatex.cpp\
    304302                                        ./modules/ConstraintsStatex/ConstraintsStatex.h\
    305303                                        ./modules/ConstraintsStatex/ConstraintsStateLocal.h\
  • ../trunk-jpl/src/c/classes/FemModel.cpp

     
    352352        Vector<IssmDouble> *pf   = NULL;
    353353        Vector<IssmDouble> *df   = NULL;
    354354
    355         bool oldalloc=false;
     355        bool oldalloc=true;
    356356
    357357        /*retrieve parameters: */
    358358        this->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
     
    537537        xDelete<int>(next_l);
    538538
    539539        /*sum over all cpus*/
    540         #ifdef _HAVE_MPI_
     540#ifdef _HAVE_MPI_
    541541        MPI_Allreduce((void*)connectivity_clone,(void*)all_connectivity_clone,numnodes,MPI_INT,MPI_SUM,IssmComm::GetComm());
    542         #endif
     542#endif
    543543        xDelete<int>(connectivity_clone);
    544544
    545545        if(set1enum==FsetEnum){
     
    573573        *po_nnz=o_nnz;
    574574
    575575}/*}}}*/
     576void FemModel::CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,IssmDouble kmax){/*{{{*/
     577
     578        int      i,connectivity;
     579        int      numberofdofspernode;
     580        int      fsize,configuration_type;
     581        Element *element = NULL;
     582        Load    *load    = NULL;
     583        Matrix<IssmDouble>* Jff = NULL;
     584
     585        /*Checks*/
     586        _assert_(nodes && elements);
     587
     588        /*Recover some parameters*/
     589        parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
     590        parameters->FindParam(&connectivity,MeshAverageVertexConnectivityEnum);
     591        fsize=nodes->NumberOfDofs(configuration_type,FsetEnum);
     592        numberofdofspernode=nodes->MaxNumDofs(configuration_type,GsetEnum);
     593
     594        /*Initialize Jacobian Matrix*/
     595        this->AllocateSystemMatrices(&Jff,NULL,NULL,NULL);
     596        Jff=new Matrix<IssmDouble>(fsize,fsize,connectivity,numberofdofspernode);
     597
     598        /*Create and assemble matrix*/
     599        for(i=0;i<elements->Size();i++){
     600                element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
     601                element->CreateJacobianMatrix(Jff);
     602        }
     603        for (i=0;i<loads->Size();i++){
     604                load=(Load*)loads->GetObjectByOffset(i);
     605                if(load->InAnalysis(configuration_type)) load->CreateJacobianMatrix(Jff);
     606                if(load->InAnalysis(configuration_type)) load->PenaltyCreateJacobianMatrix(Jff,kmax);
     607        }
     608        Jff->Assemble();
     609
     610        /*Assign output pointer*/
     611        *pJff=Jff;
     612
     613}/*}}}*/
    576614int  FemModel::UpdateVertexPositionsx(void){ /*{{{*/
    577615
    578616        int     i;
  • ../trunk-jpl/src/c/classes/FemModel.h

     
    5252
    5353                /*Methods:*/
    5454                void AllocateSystemMatrices(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,Vector<IssmDouble>** pdf,Vector<IssmDouble>** ppf);
     55                void CreateJacobianMatrixx(Matrix<IssmDouble>** pJff,IssmDouble kmax);
    5556                void Echo();
    5657                void InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, const int solution_type,const int* analyses,const int nummodels);
    5758                void MatrixNonzeros(int** pd_nnz,int** po_nnz,int set1enum,int set2enum);
Note: See TracBrowser for help on using the repository browser.