Changeset 13722


Ignore:
Timestamp:
10/17/12 16:44:25 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: moved a bunch of modules to FemModel and fix bug in MassFluxx

Location:
issm/trunk-jpl/src/c
Files:
7 deleted
4 edited

Legend:

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

    r13721 r13722  
    496496responses_sources = ./modules/MinVelx/MinVelx.h\
    497497                                             ./modules/MinVelx/MinVelx.cpp\
    498                                              ./modules/MaxVelx/MaxVelx.h\
    499                                              ./modules/MaxVelx/MaxVelx.cpp\
    500                                              ./modules/MaxAbsVxx/MaxAbsVxx.h\
    501                                              ./modules/MaxAbsVxx/MaxAbsVxx.cpp\
    502                                              ./modules/MaxAbsVyx/MaxAbsVyx.h\
    503                                              ./modules/MaxAbsVyx/MaxAbsVyx.cpp\
    504                                              ./modules/MaxAbsVzx/MaxAbsVzx.h\
    505                                              ./modules/MaxAbsVzx/MaxAbsVzx.cpp\
    506                                              ./modules/MaxVxx/MaxVxx.h\
    507                                              ./modules/MaxVxx/MaxVxx.cpp\
    508                                              ./modules/MaxVyx/MaxVyx.h\
    509                                              ./modules/MaxVyx/MaxVyx.cpp\
    510                                              ./modules/MaxVzx/MaxVzx.h\
    511                                              ./modules/MaxVzx/MaxVzx.cpp\
    512498                                             ./modules/MinVxx/MinVxx.h\
    513499                                             ./modules/MinVxx/MinVxx.cpp\
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r13721 r13722  
    380380void FemModel::Responsex(IssmDouble* responses,const char* response_descriptor,bool process_units,int weight_index){/*{{{*/
    381381
    382 
    383         int response_descriptor_enum;
    384 
    385         response_descriptor_enum=StringToEnumx(response_descriptor);
     382        int response_descriptor_enum=StringToEnumx(response_descriptor);
    386383        this->Responsex(responses, response_descriptor_enum, process_units, weight_index);
    387384
     
    396393                case IceVolumeEnum:              IceVolumex(               responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
    397394                case MinVelEnum:                 MinVelx(                  responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
    398                 case MaxVelEnum:                 MaxVelx(                  responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
     395                case MaxVelEnum:                 this->MaxVelx(                  responses,process_units); break;
    399396                case MinVxEnum:                  MinVxx(                   responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
    400                 case MaxVxEnum:                  MaxVxx(                   responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
    401                 case MaxAbsVxEnum:               MaxAbsVxx(                responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
     397                case MaxVxEnum:                  this->MaxVxx(                   responses,process_units); break;
     398                case MaxAbsVxEnum:               this->MaxAbsVxx(                responses,process_units); break;
    402399                case MinVyEnum:                  MinVyx(                   responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
    403                 case MaxVyEnum:                  MaxVyx(                   responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
    404                 case MaxAbsVyEnum:               MaxAbsVyx(                responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
     400                case MaxVyEnum:                  this->MaxVyx(                   responses,process_units); break;
     401                case MaxAbsVyEnum:               this->MaxAbsVyx(                responses,process_units); break;
    405402                case MinVzEnum:                  MinVzx(                   responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
    406                 case MaxVzEnum:                  MaxVzx(                   responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
    407                 case MaxAbsVzEnum:               MaxAbsVzx(                responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
     403                case MaxVzEnum:                  this->MaxVzx(                   responses,process_units); break;
     404                case MaxAbsVzEnum:               this->MaxAbsVzx(                responses,process_units); break;
    408405                case MassFluxEnum:               this->MassFluxx(          responses,process_units); break;
    409406                case SurfaceAbsVelMisfitEnum:    SurfaceAbsVelMisfitx(     responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
     
    414411                case ThicknessAbsMisfitEnum:     ThicknessAbsMisfitx(      responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
    415412                case ThicknessAbsGradientEnum:   this->ThicknessAbsGradientx(    responses, process_units,weight_index); break;
    416                 case ThicknessAlongGradientEnum:   ThicknessAlongGradientx(    responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
    417                 case ThicknessAcrossGradientEnum:   ThicknessAcrossGradientx(    responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
     413                case ThicknessAlongGradientEnum: ThicknessAlongGradientx(    responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
     414                case ThicknessAcrossGradientEnum:ThicknessAcrossGradientx(    responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
    418415                case TotalSmbEnum:                                      TotalSmbx(                responses, elements,nodes, vertices, loads, materials, parameters,process_units); break;
    419416                case RheologyBbarAbsGradientEnum:RheologyBbarAbsGradientx( responses, elements,nodes, vertices, loads, materials, parameters,process_units,weight_index); break;
     
    590587
    591588        /*Free ressources:*/
    592         for(i=0;j<M;i++){
    593                 IssmDouble* matrix=array[j];
     589        for(i=0;i<M;i++){
     590                IssmDouble* matrix=array[i];
    594591                xDelete<IssmDouble>(matrix);
    595592        }
     
    600597        /*Assign output pointers: */
    601598        *pmass_flux=mass_flux;
     599
     600}/*}}}*/
     601void FemModel::MaxAbsVxx(IssmDouble* pmaxabsvx,bool process_units){/*{{{*/
     602
     603        int i;
     604        IssmDouble maxabsvx;
     605        IssmDouble node_maxabsvx;
     606        IssmDouble element_maxabsvx;
     607
     608        /*Go through elements, and request velocity: */
     609        maxabsvx=-INFINITY;
     610        for(i=0;i<this->elements->Size();i++){
     611                Element* element=(Element*)this->elements->GetObjectByOffset(i);
     612                element->MaxAbsVx(&element_maxabsvx,process_units);
     613                if(element_maxabsvx>maxabsvx) maxabsvx=element_maxabsvx;
     614        }
     615
     616        /*Figure out maximum across the cluster: */
     617#ifdef _HAVE_MPI_
     618        MPI_Reduce(&maxabsvx,&node_maxabsvx,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() );
     619        MPI_Bcast(&node_maxabsvx,1,MPI_DOUBLE,0,IssmComm::GetComm());   
     620        maxabsvx=node_maxabsvx;
     621#endif
     622
     623        /*Assign output pointers:*/
     624        *pmaxabsvx=maxabsvx;
     625
     626}/*}}}*/
     627void FemModel::MaxAbsVyx(IssmDouble* pmaxabsvy,bool process_units){/*{{{*/
     628
     629        int i;
     630        IssmDouble maxabsvy;
     631        IssmDouble node_maxabsvy;
     632        IssmDouble element_maxabsvy;
     633
     634        /*Go through elements, and request velocity: */
     635        maxabsvy=-INFINITY;
     636        for(i=0;i<this->elements->Size();i++){
     637                Element* element=(Element*)this->elements->GetObjectByOffset(i);
     638                element->MaxAbsVy(&element_maxabsvy,process_units);
     639                if(element_maxabsvy>maxabsvy) maxabsvy=element_maxabsvy;
     640        }
     641
     642        /*Figure out maximum across the cluster: */
     643#ifdef _HAVE_MPI_
     644        MPI_Reduce(&maxabsvy,&node_maxabsvy,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() );
     645        MPI_Bcast(&node_maxabsvy,1,MPI_DOUBLE,0,IssmComm::GetComm());   
     646        maxabsvy=node_maxabsvy;
     647#endif
     648
     649        /*Assign output pointers:*/
     650        *pmaxabsvy=maxabsvy;
     651
     652}/*}}}*/
     653void FemModel::MaxAbsVzx(IssmDouble* pmaxabsvz,bool process_units){/*{{{*/
     654
     655        int i;
     656        IssmDouble maxabsvz;
     657        IssmDouble node_maxabsvz;
     658        IssmDouble element_maxabsvz;
     659
     660        /*Go through elements, and request velocity: */
     661        maxabsvz=-INFINITY;
     662        for(i=0;i<this->elements->Size();i++){
     663                Element* element=(Element*)this->elements->GetObjectByOffset(i);
     664                element->MaxAbsVz(&element_maxabsvz,process_units);
     665                if(element_maxabsvz>maxabsvz) maxabsvz=element_maxabsvz;
     666        }
     667
     668        /*Figure out maximum across the cluster: */
     669#ifdef _HAVE_MPI_
     670        MPI_Reduce(&maxabsvz,&node_maxabsvz,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() );
     671        MPI_Bcast(&node_maxabsvz,1,MPI_DOUBLE,0,IssmComm::GetComm());   
     672        maxabsvz=node_maxabsvz;
     673#endif
     674
     675        /*Assign output pointers:*/
     676        *pmaxabsvz=maxabsvz;
     677
     678}/*}}}*/
     679void FemModel::MaxVelx(IssmDouble* pmaxvel,bool process_units){/*{{{*/
     680
     681        int i;
     682        IssmDouble maxvel;
     683        IssmDouble node_maxvel;
     684        IssmDouble element_maxvel;
     685
     686        /*Go through elements, and request velocity: */
     687        maxvel=-INFINITY;
     688        for(i=0;i<this->elements->Size();i++){
     689                Element* element=(Element*)this->elements->GetObjectByOffset(i);
     690                element->MaxVel(&element_maxvel,process_units);
     691                if(element_maxvel>maxvel) maxvel=element_maxvel;
     692        }
     693
     694        /*Figure out maximum across the cluster: */
     695#ifdef _HAVE_MPI_
     696        MPI_Reduce(&maxvel,&node_maxvel,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() );
     697        MPI_Bcast(&node_maxvel,1,MPI_DOUBLE,0,IssmComm::GetComm());   
     698        maxvel=node_maxvel;
     699#endif
     700
     701        /*Assign output pointers:*/
     702        *pmaxvel=maxvel;
     703
     704}/*}}}*/
     705void FemModel::MaxVxx(IssmDouble* pmaxvx,bool process_units){/*{{{*/
     706
     707        int i;
     708        IssmDouble maxvx;
     709        IssmDouble node_maxvx;
     710        IssmDouble element_maxvx;
     711
     712        /*Go through elements, and request velocity: */
     713        maxvx=-INFINITY;
     714        for(i=0;i<this->elements->Size();i++){
     715                Element* element=(Element*)this->elements->GetObjectByOffset(i);
     716                element->MaxVx(&element_maxvx,process_units);
     717                if(element_maxvx>maxvx) maxvx=element_maxvx;
     718        }
     719
     720        /*Figure out maximum across the cluster: */
     721#ifdef _HAVE_MPI_
     722        MPI_Reduce(&maxvx,&node_maxvx,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() );
     723        MPI_Bcast(&node_maxvx,1,MPI_DOUBLE,0,IssmComm::GetComm());   
     724        maxvx=node_maxvx;
     725#endif
     726
     727        /*Assign output pointers:*/
     728        *pmaxvx=maxvx;
     729
     730}/*}}}*/
     731void FemModel::MaxVyx(IssmDouble* pmaxvy,bool process_units){/*{{{*/
     732
     733        int i;
     734        IssmDouble maxvy;
     735        IssmDouble node_maxvy;
     736        IssmDouble element_maxvy;
     737
     738        /*Go through elements, and request velocity: */
     739        maxvy=-INFINITY;
     740        for(i=0;i<this->elements->Size();i++){
     741                Element* element=(Element*)this->elements->GetObjectByOffset(i);
     742                element->MaxVy(&element_maxvy,process_units);
     743                if(element_maxvy>maxvy) maxvy=element_maxvy;
     744        }
     745
     746        /*Figure out maximum across the cluster: */
     747#ifdef _HAVE_MPI_
     748        MPI_Reduce(&maxvy,&node_maxvy,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() );
     749        MPI_Bcast(&node_maxvy,1,MPI_DOUBLE,0,IssmComm::GetComm());   
     750        maxvy=node_maxvy;
     751#endif
     752
     753        /*Assign output pointers:*/
     754        *pmaxvy=maxvy;
     755
     756}/*}}}*/
     757void FemModel::MaxVzx(IssmDouble* pmaxvz,bool process_units){/*{{{*/
     758
     759        int i;
     760        IssmDouble maxvz;
     761        IssmDouble node_maxvz;
     762        IssmDouble element_maxvz;
     763
     764        /*Go through elements, and request velocity: */
     765        maxvz=-INFINITY;
     766        for(i=0;i<this->elements->Size();i++){
     767                Element* element=(Element*)this->elements->GetObjectByOffset(i);
     768                element->MaxVz(&element_maxvz,process_units);
     769                if(element_maxvz>maxvz) maxvz=element_maxvz;
     770        }
     771
     772        /*Figure out maximum across the cluster: */
     773#ifdef _HAVE_MPI_
     774        MPI_Reduce(&maxvz,&node_maxvz,1,MPI_DOUBLE,MPI_MAX,0,IssmComm::GetComm() );
     775        MPI_Bcast(&node_maxvz,1,MPI_DOUBLE,0,IssmComm::GetComm());   
     776        maxvz=node_maxvz;
     777#endif
     778
     779        /*Assign output pointers:*/
     780        *pmaxvz=maxvz;
    602781
    603782}/*}}}*/
  • issm/trunk-jpl/src/c/classes/FemModel.h

    r13721 r13722  
    6262                /*Modules*/
    6363                #ifdef _HAVE_RESPONSES_
    64                 void MassFluxx(IssmDouble* pmass_flux,bool process_units);
     64                void MassFluxx(IssmDouble* presponse,bool process_units);
     65                void MaxAbsVxx(IssmDouble* presponse,bool process_units);
     66                void MaxAbsVyx(IssmDouble* presponse,bool process_units);
     67                void MaxAbsVzx(IssmDouble* presponse,bool process_units);
     68                void MaxVelx(IssmDouble* presponse,bool process_units);
     69                void MaxVxx(IssmDouble* presponse,bool process_units);
     70                void MaxVyx(IssmDouble* presponse,bool process_units);
     71                void MaxVzx(IssmDouble* presponse,bool process_units);
    6572                #endif
    6673                #ifdef  _HAVE_DAKOTA_
  • issm/trunk-jpl/src/c/modules/modules.h

    r13721 r13722  
    6363#include "./Krigingx/Krigingx.h"
    6464#include "./Shp2Kmlx/Shp2Kmlx.h"
    65 #include "./MaxAbsVxx/MaxAbsVxx.h"
    66 #include "./MaxAbsVyx/MaxAbsVyx.h"
    67 #include "./MaxAbsVzx/MaxAbsVzx.h"
    68 #include "./MaxVelx/MaxVelx.h"
    6965#include "./ElementResponsex/ElementResponsex.h"
    70 #include "./MaxVxx/MaxVxx.h"
    71 #include "./MaxVyx/MaxVyx.h"
    72 #include "./MaxVzx/MaxVzx.h"
    7366#include "./Mergesolutionfromftogx/Mergesolutionfromftogx.h"
    7467#include "./MeshPartitionx/MeshPartitionx.h"
Note: See TracChangeset for help on using the changeset viewer.