Changeset 4057


Ignore:
Timestamp:
06/18/10 20:48:42 (15 years ago)
Author:
Eric.Larour
Message:

Diagnostic solution now compiles in parallel! yeehah!

Location:
issm/trunk/src/c
Files:
64 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp

    r4055 r4057  
    184184                case SurfaceSlopeYEnum : return "SurfaceSlopeY";
    185185                case TemperatureEnum : return "Temperature";
     186                case TemperatureOldEnum : return "TemperatureOld";
    186187                case TemperatureAverageEnum : return "TemperatureAverage";
    187188                case ThicknessEnum : return "Thickness";
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h

    r4055 r4057  
    213213        SurfaceSlopeYEnum,
    214214        TemperatureEnum,
     215        TemperatureOldEnum,
    215216        TemperatureAverageEnum,
    216217        ThicknessEnum,
  • issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp

    r4055 r4057  
    182182        else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
    183183        else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
     184        else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum;
    184185        else if (strcmp(name,"TemperatureAverage")==0) return TemperatureAverageEnum;
    185186        else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
  • issm/trunk/src/c/Makefile.am

    r4055 r4057  
    9393                                        ./objects/DakotaPlugin.h\
    9494                                        ./objects/DakotaPlugin.cpp\
     95                                        ./objects/Node.h\
     96                                        ./objects/Node.cpp\
    9597                                        ./objects/Vertex.h\
    9698                                        ./objects/Vertex.cpp\
    9799                                        ./objects/Hook.h\
    98100                                        ./objects/Hook.cpp\
     101                                        ./objects/Patch.h\
     102                                        ./objects/Patch.cpp\
    99103                                        ./objects/DofIndexing.h\
    100104                                        ./objects/DofIndexing.cpp\
    101105                                        ./objects/IoModel.h\
    102106                                        ./objects/IoModel.cpp\
    103                                         ./objects/Node.h\
    104                                         ./objects/Node.cpp\
    105107                                        ./objects/ElementResults/ElementResultLocal.h\
    106108                                        ./objects/ElementResults/NodalValuesUnitConversion.cpp\
     
    124126                                        ./objects/ExternalResults/IntExternalResult.h\
    125127                                        ./objects/ExternalResults/IntExternalResult.cpp\
     128                                        ./objects/ExternalResults/StringExternalResult.h\
     129                                        ./objects/ExternalResults/StringExternalResult.cpp\
    126130                                        ./objects/ExternalResults/PetscVecExternalResult.h\
    127131                                        ./objects/ExternalResults/PetscVecExternalResult.cpp\
     
    220224                                        ./shared/Numerics/isnan.h\
    221225                                        ./shared/Numerics/isnan.cpp\
     226                                        ./shared/Numerics/IsInputConverged.cpp\
    222227                                        ./shared/Numerics/GaussPoints.h\
    223228                                        ./shared/Numerics/cross.cpp\
     
    426431                                        ./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h\
    427432                                        ./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\
     433                                        ./modules/GetVectorFromInputsx/GetVectorFromInputsx.h\
     434                                        ./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp\
    428435                                        ./modules/UpdateInputsFromVectorx/UpdateInputsFromVectorx.h\
    429436                                        ./modules/UpdateInputsFromVectorx/UpdateInputsFromVectorx.cpp\
     
    617624                                        ./objects/Hook.h\
    618625                                        ./objects/Hook.cpp\
     626                                        ./objects/Patch.h\
     627                                        ./objects/Patch.cpp\
    619628                                        ./objects/ElementResults/ElementResultLocal.h\
    620629                                        ./objects/ElementResults/NodalValuesUnitConversion.cpp\
     
    638647                                        ./objects/ExternalResults/IntExternalResult.h\
    639648                                        ./objects/ExternalResults/IntExternalResult.cpp\
     649                                        ./objects/ExternalResults/StringExternalResult.h\
     650                                        ./objects/ExternalResults/StringExternalResult.cpp\
    640651                                        ./objects/ExternalResults/PetscVecExternalResult.h\
    641652                                        ./objects/ExternalResults/PetscVecExternalResult.cpp\
     
    732743                                        ./shared/Dofs/DistributeNumDofs.cpp\
    733744                                        ./shared/Numerics/numerics.h\
     745                                        ./shared/Numerics/IsInputConverged.cpp\
    734746                                        ./shared/Numerics/GaussPoints.h\
    735747                                        ./shared/Numerics/GaussPoints.cpp\
     
    939951                                        ./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.h\
    940952                                        ./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\
     953                                        ./modules/GetVectorFromInputsx/GetVectorFromInputsx.h\
     954                                        ./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp\
    941955                                        ./modules/UpdateInputsFromVectorx/UpdateInputsFromVectorx.h\
    942956                                        ./modules/UpdateInputsFromVectorx/UpdateInputsFromVectorx.cpp\
     
    10291043                                        ./solutions/convergence.cpp\
    10301044                                        ./solutions/thermal_core.cpp\
     1045                                        ./solutions/thermal_core_step.cpp\
    10311046                                        ./solutions/WriteLockFile.cpp\
    10321047                                        ./solutions/control_core.cpp\
    10331048                                        ./solutions/stokescontrolinit.cpp\
    10341049                                        ./solutions/controlrestart.cpp\
     1050                                        ./solutions/controlconvergence.cpp\
    10351051                                        ./solutions/objectivefunctionC.cpp\
    10361052                                        ./solutions/gradient_core.cpp\
     
    10481064                                        ./solutions/transient3d_core.cpp\
    10491065                                        ./solutions/steadystate_core.cpp\
     1066                                        ./solutions/steadystateconvergence.cpp\
    10501067                                        ./solutions/ResetBoundaryConditions.cpp\
    10511068                                        ./solvers/solver_linear.cpp\
     
    10621079bin_PROGRAMS =
    10631080else
    1064 bin_PROGRAMS = DiagnosticSolution.exe ThermalSolution.exe PrognosticSolution.exe Prognostic2Solution.exe BalancedthicknessSolution.exe Balancedthickness2Solution.exe BalancedvelocitiesSolution.exe Transient2DSolution.exe Transient23Solution.exe SteadystateSolution.exe SurfaceSlopeSolution.exe BedSlopeSolution.exe
     1081bin_PROGRAMS = DiagnosticSolution.exe ThermalSolution.exe PrognosticSolution.exe Prognostic2Solution.exe BalancedthicknessSolution.exe Balancedthickness2Solution.exe BalancedvelocitiesSolution.exe Transient2DSolution.exe Transient3DSolution.exe SteadystateSolution.exe SurfaceSlopeSolution.exe BedSlopeSolution.exe
    10651082endif
    10661083
  • issm/trunk/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp

    r4055 r4057  
    1212
    1313
     14        int i;
    1415        Vec vector=NULL;
    1516
     
    3940}
    4041
    41 void GetVectorFromInputsx( double* pvector, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters, int NameEnum, int TypeEnum){
     42void GetVectorFromInputsx( double** pvector, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters, int NameEnum, int TypeEnum){
    4243       
    4344        /*output: */
  • issm/trunk/src/c/modules/GetVectorFromInputsx/GetVectorFromInputsx.h

    r4055 r4057  
    1010/* local prototypes: */
    1111void    GetVectorFromInputsx( Vec* pvector, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,int NameEnum,int TypeEnum);
    12 void    GetVectorFromInputsx( double* pvector, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,int NameEnum,int TypeEnum);
     12void    GetVectorFromInputsx( double** pvector, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,int NameEnum,int TypeEnum);
    1313
    1414#endif  /* _GETVECTORFROMINPUTSXX_H */
  • issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.cpp

    r4055 r4057  
    88#include "../../EnumDefinitions/EnumDefinitions.h"
    99
    10 int InputConvergencex(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int enums, int num_enums, int criterionenums, double* criterionvalues,int num_criterionenums){
     10int InputConvergencex(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int* enums, int num_enums, int* criterionenums, double* criterionvalues,int num_criterionenums){
    1111
    1212        /*intermediary:*/
     
    1717        extern int  my_rank;
    1818        int         rank_allowed;
     19        Element*    element=NULL;
     20        int         verbose=0;
    1921
    2022        /*First, configure our datasets: */
     
    2426        parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
    2527
     28        /*retrieve parameters: */
     29        parameters->FindParam(&verbose,VerboseEnum);
     30       
    2631        /*allocate dynamic memory: */
    2732        eps=(double*)xmalloc(num_criterionenums*sizeof(double));
     
    2934        /*Go through elements, and ask them to do the job: */
    3035        for(i=0;i<elements->Size();i++){
    31                 Element* element=(Element*)elements->GetObjectByOffset(i);
     36                element=(Element*)elements->GetObjectByOffset(i);
    3237                element->InputConvergence(&converged,eps,enums,num_enums,criterionenums,criterionvalues,num_criterionenums);
    3338                if(!converged)break;
  • issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.h

    r4055 r4057  
    88
    99/* local prototypes: */
    10 int InputConvergencex(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int enums, int num_enums, int criterionenums, double* criterionvalues,int num_criterionenums);
     10int InputConvergencex(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int* enums, int num_enums, int* criterionenums, double* criterionvalues,int num_criterionenums);
    1111
    1212#endif  /* _INPUTCONVERGENCEX_H */
  • issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp

    r4025 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesBalancedthickness(DataSet** pelements,DataSet** pnodes, DataSet** pvertices, DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesBalancedthickness(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/CreateNodesBalancedthickness2.cpp

    r4025 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesBalancedthickness2(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesBalancedthickness2(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp

    r4025 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesBalancedvelocities(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesBalancedvelocities(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp

    r4025 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesDiagnosticHutter(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesDiagnosticHutter(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp

    r4025 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesDiagnosticStokes(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesDiagnosticStokes(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/UpdateElementsDiagnosticStokes.cpp

    r4025 r4057  
    11/*
    2  * UpdateElementsDiagnosticHoriz:
     2 * UpdateElementsDiagnosticStokes:
    33 */
    44
     
    1313#include "../ModelProcessorx.h"
    1414
    15 void    UpdateElementsDiagnosticHoriz(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
     15void    UpdateElementsDiagnosticStokes(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp

    r4025 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesDiagnosticVert(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesDiagnosticVert(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp

    r4025 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesMelting(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesMelting(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp

    r4025 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesPrognostic(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesPrognostic(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/Prognostic2/CreateNodesPrognostic2.cpp

    r4025 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesPrognostic2(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesPrognostic2(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/CreateNodesSlopeCompute.cpp

    r4055 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesSlopeCompute(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesSlopeCompute(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp

    r4025 r4057  
    1313#include "../ModelProcessorx.h"
    1414
    15 void    CreateNodesThermal(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
     15void    CreateNodesThermal(DataSet** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
    1616
    1717        /*Intermediary*/
  • issm/trunk/src/c/modules/PenaltySystemMatricesx/PenaltySystemMatricesx.h

    r3913 r4057  
    1010
    1111/* local prototypes: */
    12 void PenaltySystemMatricesx(Mat Kgg, Vec pg,double* pkmax, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials, Parameters* parameters,
    13                 int kflag,int pflag,int analysis_type,int sub_analysis_type);
     12void PenaltySystemMatricesx(Mat Kgg, Vec pg,double* pkmax, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials, Parameters* parameters, int kflag,int pflag);
    1413
    1514#endif  /* _PENALTYSYSTEMMATRICESX_H */
  • issm/trunk/src/c/modules/Qmux/SpawnCoreParallel.cpp

    r4043 r4057  
    111111
    112112        }
    113         else if(solution_type==TransientAnalysisEnum){
     113        else if(solution_type==Transient2DAnalysisEnum){
    114114
    115115                if(verbose)_printf_("Starting transient core\n");
    116                 transient_core(femmodel);
     116                transient2d_core(femmodel);
     117
     118        }
     119        else if(solution_type==Transient3DAnalysisEnum){
     120
     121                if(verbose)_printf_("Starting transient core\n");
     122                transient3d_core(femmodel);
    117123
    118124        }
  • issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.h

    r3913 r4057  
    1010
    1111/* local prototypes: */
    12 void SystemMatricesx(Mat* pKgg, Vec* ppg,DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials, Parameters* parameters,
    13                 int kflag,int pflag,int analysis_type,int sub_analysis_type);
     12void SystemMatricesx(Mat* pKgg, Vec* ppg,DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials, Parameters* parameters, int kflag,int pflag);
    1413
    1514#endif  /* _SYSTEMMATRICESX_H */
  • issm/trunk/src/c/modules/UpdateGeometryx/UpdateGeometryx.cpp

    r4055 r4057  
    44
    55#include "./UpdateGeometryx.h"
    6 
    7 #include "../../shared/shared.h"
     6#include "../modules.h"
    87#include "../../include/include.h"
    98#include "../../toolkits/toolkits.h"
     
    1918        Vec     vec_newthickness=NULL;
    2019        Vec     vec_bed=NULL;
    21         Vec     vec_surface=NULL:
     20        Vec     vec_surface=NULL;
    2221        double* newthickness=NULL;
    2322        double* bed=NULL;
     
    2524
    2625        /*objects: */
    27         Vertex* vertex=NULL;
     26        Node* node=NULL;
    2827        Object* object=NULL;
    2928        Matpar* matpar=NULL;
     
    6261        rho_water=matpar->GetRhoWater();
    6362
    64         /*Go through vertices and for each vertex, update the thickness, bed and surface, using the
     63        /*Go through nodes and for each node, update the thickness, bed and surface, using the
    6564         * new thickness computed in the prognostic_core part of the transient solution sequence: */
    6665
    67         for(i=0;i<vertices->Size();i++){
     66        for(i=0;i<nodes->Size();i++){
    6867
    6968                /*get i'th node: */
    70                 vertex=(Vertex*)vertices->GetObjectByOffset(i);
     69                node=(Node*)vertices->GetObjectByOffset(i);
    7170
    72                 /*first, recover thickness, surface and bed for this vertex: */
    73                 dof=vertex->GetDofList1();
     71                /*first, recover thickness, surface and bed for this node: */
     72                dof=node->GetDofList1();
    7473                h=newthickness[dof];
    7574                s=surface[dof];
     
    8079
    8180                //For grids on ice sheet, the new bed remains the same, the new surface becomes bed+new_thickness.
    82                 if (vertex->IsOnSheet()){
     81                if (node->IsOnSheet()){
    8382                        s=b+h;
    8483                }
    8584
    8685                //For grids on ice shelt, we have hydrostatic equilibrium (for now)
    87                 if (vertex->IsOnShelf()){
     86                if (node->IsOnShelf()){
    8887                        b=-rho_ice/rho_water*h;
    8988                        s=(1-rho_ice/rho_water)*h;
  • issm/trunk/src/c/modules/UpdateVertexPositionsx/UpdateVertexPositionsx.cpp

    r3969 r4057  
    44
    55#include "./UpdateVertexPositionsx.h"
    6 
     6#include "../modules.h"
    77#include "../../shared/shared.h"
    88#include "../../include/include.h"
     
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    12 void UpdateVertexPositionsx( DataSet* vertices, Vec thickness,Vec bed){
     12int UpdateVertexPositionsx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters){
    1313
    14         /*intermediary: */
    1514        int i;
    1615        Vertex* vertex=NULL;
    17         double* thickness_serial=NULL;
    18         double* bed_serial=NULL;
     16        double* thickness=NULL;
     17        double* bed=NULL;
    1918
    20         /*serialize inputs: */
    21         VecToMPISerial(&thickness_serial,thickness);
    22         VecToMPISerial(&bed_serial,bed);
    23        
     19        /*First, get elements and loads configured: */
     20        elements->  Configure(elements,loads, nodes,vertices, materials,parameters);
     21        nodes->     Configure(elements,loads, nodes,vertices, materials,parameters);
     22        parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
     23
     24
     25        /*get vertex vectors for bed and thickness: */
     26        GetVectorFromInputsx( &thickness,elements,nodes, vertices, loads, materials, parameters, ThicknessEnum,VertexEnum);
     27        GetVectorFromInputsx( &thickness,elements,nodes, vertices, loads, materials, parameters, BedEnum,VertexEnum);
     28
    2429        /*Update verices new geometry: */
    2530        for (i=0;i<vertices->Size();i++){
    2631                vertex=(Vertex*)vertices->GetObjectByOffset(i);
    27                 vertex->UpdatePosition(thickness_serial,bed_serial);
     32                vertex->UpdatePosition(thickness,bed);
    2833        }
    2934
    3035        /*Free ressources:*/
    31         xfree((void**)&thickness_serial);
    32         xfree((void**)&bed_serial);
     36        xfree((void**)&thickness);
     37        xfree((void**)&bed);
    3338}
  • issm/trunk/src/c/modules/UpdateVertexPositionsx/UpdateVertexPositionsx.h

    r3913 r4057  
    99
    1010/* local prototypes: */
    11 void UpdateVertexPositionsx( DataSet* vertices, Vec thickness,Vec bed);
     11int UpdateVertexPositionsx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters);
    1212
    1313#endif  /* _UPDATEVERTEXPOSITIONSXX_H */
  • issm/trunk/src/c/objects/Elements/Beam.cpp

    r4055 r4057  
    6464
    6565        return beam;
     66}
     67/*}}}*/
     68/*FUNCTION Beam::Configure {{{1*/
     69void  Beam::Configure(DataSet* elementsin,DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
     70
     71        ISSMERROR(" not supported yet!");
     72
    6673}
    6774/*}}}*/
     
    10561063/*}}}*/
    10571064/*FUNCTION Beam::InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){{{1*/
    1058 void  Beam::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){a
    1059 
     1065void  Beam::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
     1066
     1067        int     i;
    10601068        Input** new_inputs=NULL;
    10611069        Input** old_inputs=NULL;
     
    10661074       
    10671075        for(i=0;i<num_enums/2;i++){
    1068                 new_inputs[i]=(Input*)this->inputs->GetInput(new_enums[2*i+0]);
    1069                 old_inputs[i]=(Input*)this->inputs->GetInput(old_enums[2*i+1]);
    1070                 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(new_enums[2*i+0]));
    1071                 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(old_enums[2*i+0]));
     1076                new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]);
     1077                old_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+1]);
     1078                if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0]));
     1079                if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0]));
    10721080        }
    10731081
    10741082        /*ok, we've got the inputs (new and old), now loop throught the number of criterions and fill the eps array:*/
    10751083        for(i=0;i<num_criterionenums;i++){
    1076                 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,,criterionenums[i]);
     1084                IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]);
    10771085                if(eps[i]>criterionvalues[i]) converged=0;
    10781086        }
  • issm/trunk/src/c/objects/Elements/Beam.h

    r4055 r4057  
    9898                void  AXPYInput(int YEnum, double scalar, int XEnum);
    9999                void  ControlConstrainInput(int control_type,double cm_min, double cm_max);
    100                 void  InputConvergence(int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
     100                void  InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
    101101
    102102                /*}}}*/
  • issm/trunk/src/c/objects/Elements/Element.h

    r4055 r4057  
    6969                virtual void   AXPYInput(int YEnum, double scalar, int XEnum)=0;
    7070                virtual void   ControlConstrainInput(int control_type,double cm_min, double cm_max)=0;
    71                 virtual void   InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double criterionvalues,double* criterionvalues,int num_criterionenums)=0;
     71                virtual void   InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0;
    7272
    7373                /*Implementation: */
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r4055 r4057  
    53165316/*}}}*/
    53175317/*FUNCTION Penta::InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){{{1*/
    5318 void  Penta::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){a
    5319 
     5318void  Penta::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
     5319
     5320        int     i;
    53205321        Input** new_inputs=NULL;
    53215322        Input** old_inputs=NULL;
     
    53265327       
    53275328        for(i=0;i<num_enums/2;i++){
    5328                 new_inputs[i]=(Input*)this->inputs->GetInput(new_enums[2*i+0]);
    5329                 old_inputs[i]=(Input*)this->inputs->GetInput(old_enums[2*i+1]);
    5330                 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(new_enums[2*i+0]));
    5331                 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(old_enums[2*i+0]));
     5329                new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]);
     5330                old_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+1]);
     5331                if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0]));
     5332                if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0]));
    53325333        }
    53335334
    53345335        /*ok, we've got the inputs (new and old), now loop throught the number of criterions and fill the eps array:*/
    53355336        for(i=0;i<num_criterionenums;i++){
    5336                 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,,criterionenums[i]);
     5337                IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]);
    53375338                if(eps[i]>criterionvalues[i]) converged=0;
    53385339        }
  • issm/trunk/src/c/objects/Elements/Penta.h

    r4055 r4057  
    165165                void  AXPYInput(int YEnum, double scalar, int XEnum);
    166166                void  ControlConstrainInput(int control_type,double cm_min, double cm_max);
    167                 void  InputConvergence(int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
     167                void  InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
    168168                void  GetVectorFromInputs(Vec vector,int NameEnum);
    169169
  • issm/trunk/src/c/objects/Elements/Sing.cpp

    r4055 r4057  
    762762/*}}}*/
    763763/*FUNCTION Sing::InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){{{1*/
    764 void  Sing::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){a
    765 
     764void  Sing::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
     765
     766        int i;
    766767        Input** new_inputs=NULL;
    767768        Input** old_inputs=NULL;
     
    772773       
    773774        for(i=0;i<num_enums/2;i++){
    774                 new_inputs[i]=(Input*)this->inputs->GetInput(new_enums[2*i+0]);
    775                 old_inputs[i]=(Input*)this->inputs->GetInput(old_enums[2*i+1]);
    776                 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(new_enums[2*i+0]));
    777                 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(old_enums[2*i+0]));
     775                new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]);
     776                old_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+1]);
     777                if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0]));
     778                if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0]));
    778779        }
    779780
    780781        /*ok, we've got the inputs (new and old), now loop throught the number of criterions and fill the eps array:*/
    781782        for(i=0;i<num_criterionenums;i++){
    782                 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,,criterionenums[i]);
     783                IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]);
    783784                if(eps[i]>criterionvalues[i]) converged=0;
    784785        }
  • issm/trunk/src/c/objects/Elements/Sing.h

    r4055 r4057  
    9696                void  ScaleInput(int enum_type,double scale_factor);
    9797                void  AXPYInput(int YEnum, double scalar, int XEnum);
    98                 void  InputConvergence(int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
     98                void  InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
    9999                void  ControlConstrainInput(int control_type,double cm_min, double cm_max);
    100100
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r4055 r4057  
    54955495/*}}}*/
    54965496/*FUNCTION Tria::InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){{{1*/
    5497 void  Tria::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){a
    5498 
     5497void  Tria::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){
     5498
     5499        int i;
    54995500        Input** new_inputs=NULL;
    55005501        Input** old_inputs=NULL;
     
    55055506       
    55065507        for(i=0;i<num_enums/2;i++){
    5507                 new_inputs[i]=(Input*)this->inputs->GetInput(new_enums[2*i+0]);
    5508                 old_inputs[i]=(Input*)this->inputs->GetInput(old_enums[2*i+1]);
    5509                 if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(new_enums[2*i+0]));
    5510                 if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(old_enums[2*i+0]));
     5508                new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]);
     5509                old_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+1]);
     5510                if(!new_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0]));
     5511                if(!old_inputs[i])ISSMERROR("%s%s"," could not find input with enum ",EnumAsString(enums[2*i+0]));
    55115512        }
    55125513
    55135514        /*ok, we've got the inputs (new and old), now loop throught the number of criterions and fill the eps array:*/
    55145515        for(i=0;i<num_criterionenums;i++){
    5515                 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,,criterionenums[i]);
     5516                IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]);
    55165517                if(eps[i]>criterionvalues[i]) converged=0;
    55175518        }
  • issm/trunk/src/c/objects/Elements/Tria.h

    r4055 r4057  
    142142                void  ScaleInput(int enum_type,double scale_factor);
    143143                void  AXPYInput(int YEnum, double scalar, int XEnum);
    144                 void  InputConvergence(int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
     144                void  InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
    145145                void  ControlConstrainInput(int control_type,double cm_min, double cm_max);
    146146                void  GetVectorFromInputs(Vec vector,int NameEnum);
  • issm/trunk/src/c/objects/ExternalResults/StringExternalResult.cpp

    r4050 r4057  
    8181       
    8282        this->value=(char*)xmalloc(stringsize*sizeof(char));
    83         memcpy(this->value,marshalled_dataset,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);
    84         memcpy(this->step,marshalled_dataset,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);
    85         memcpy(this->time,marshalled_dataset,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);
     83        memcpy(value,marshalled_dataset,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);
     84        memcpy(&step,marshalled_dataset,sizeof(step));marshalled_dataset+=sizeof(step);
     85        memcpy(&time,marshalled_dataset,sizeof(time));marshalled_dataset+=sizeof(time);
    8686
    8787        /*return: */
     
    128128        memcpy(marshalled_dataset,&stringsize,sizeof(stringsize));marshalled_dataset+=sizeof(stringsize);
    129129        memcpy(marshalled_dataset,this->value,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);
    130         memcpy(marshalled_dataset,this->step,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);
    131         memcpy(marshalled_dataset,this->time,stringsize*sizeof(char));marshalled_dataset+=stringsize*sizeof(char);
     130        memcpy(marshalled_dataset,&step,sizeof(step));marshalled_dataset+=sizeof(step);
     131        memcpy(marshalled_dataset,&time,sizeof(time));marshalled_dataset+=sizeof(time);
    132132
    133133        *pmarshalled_dataset=marshalled_dataset;
  • issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp

    r4055 r4057  
    199199/*}}}*/
    200200/*FUNCTION BeamVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){{{1*/
    201 void BeamVertexInput::GetParameterValues(double* pvalues,double* gauss_pointers, int numgauss){
     201void BeamVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){
    202202        /*It is assumed that output has been correctly allocated*/
    203203
     
    295295/*}}}*/
    296296/*FUNCTION BeamVertexInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/
    297 void BeamVertexInput::GetValuesPtr(double* pvalues,int* pnum_values){
     297void BeamVertexInput::GetValuesPtr(double** pvalues,int* pnum_values){
    298298
    299299        *pvalues=this->values;
  • issm/trunk/src/c/objects/Inputs/BeamVertexInput.h

    r4055 r4057  
    7878                void Constrain(double cm_min, double cm_max);
    7979                void GetVectorFromInputs(Vec vector,int* doflist);
    80                 void GetValuesPtr(double* pvalues,int* pnum_values);
     80                void GetValuesPtr(double** pvalues,int* pnum_values);
    8181                /*}}}*/
    8282
  • issm/trunk/src/c/objects/Inputs/BoolInput.cpp

    r4055 r4057  
    256256}
    257257/*}}}*/
    258 /*FUNCTION BoolInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/
    259 void BoolInput::GetValuesPtr(double* pvalues,int* pnum_values){
     258/*FUNCTION BoolInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/
     259void BoolInput::GetValuesPtr(double** pvalues,int* pnum_values){
    260260
    261261        ISSMERROR(" not supported yet!");
  • issm/trunk/src/c/objects/Inputs/BoolInput.h

    r4055 r4057  
    7878                void Constrain(double cm_min, double cm_max);
    7979                void GetVectorFromInputs(Vec vector,int* doflist);
    80                 void GetValuesPtr(double* pvalues,int* pnum_values);
     80                void GetValuesPtr(double** pvalues,int* pnum_values);
    8181                /*}}}*/
    8282
  • issm/trunk/src/c/objects/Inputs/DoubleInput.cpp

    r4055 r4057  
    267267}
    268268/*}}}*/
    269 /*FUNCTION DoubleInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/
    270 void DoubleInput::GetValuesPtr(double* pvalues,int* pnum_values){
     269/*FUNCTION DoubleInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/
     270void DoubleInput::GetValuesPtr(double** pvalues,int* pnum_values){
    271271
    272272        ISSMERROR(" not supported yet!");
  • issm/trunk/src/c/objects/Inputs/DoubleInput.h

    r4055 r4057  
    7979                void Constrain(double cm_min, double cm_max);
    8080                void GetVectorFromInputs(Vec vector,int* doflist);
    81                 void GetValuesPtr(double* pvalues,int* pnum_values);
     81                void GetValuesPtr(double** pvalues,int* pnum_values);
    8282                /*}}}*/
    8383
  • issm/trunk/src/c/objects/Inputs/Input.h

    r4055 r4057  
    5555                virtual void Constrain(double cm_min, double cm_max)=0;
    5656                virtual void GetVectorFromInputs(Vec vector,int* doflist)=0;
    57                 virtual void GetValuesPtr(double* pvalues,int* pnum_values)=0;
     57                virtual void GetValuesPtr(double** pvalues,int* pnum_values)=0;
    5858                /*}}}*/
    5959
  • issm/trunk/src/c/objects/Inputs/IntInput.cpp

    r4055 r4057  
    257257}
    258258/*}}}*/
    259 /*FUNCTION IntInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/
    260 void IntInput::GetValuesPtr(double* pvalues,int* pnum_values){
     259/*FUNCTION IntInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/
     260void IntInput::GetValuesPtr(double** pvalues,int* pnum_values){
    261261
    262262        ISSMERROR(" not supported yet!");
  • issm/trunk/src/c/objects/Inputs/IntInput.h

    r4055 r4057  
    7878                void Constrain(double cm_min, double cm_max);
    7979                void GetVectorFromInputs(Vec vector,int* doflist);
    80                 void GetValuesPtr(double* pvalues,int* pnum_values);
     80                void GetValuesPtr(double** pvalues,int* pnum_values);
    8181                /*}}}*/
    8282
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp

    r4055 r4057  
    943943}
    944944/*}}}*/
    945 /*FUNCTION PentaVertexInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/
    946 void PentaVertexInput::GetValuesPtr(double* pvalues,int* pnum_values){
     945/*FUNCTION PentaVertexInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/
     946void PentaVertexInput::GetValuesPtr(double** pvalues,int* pnum_values){
    947947
    948948        *pvalues=this->values;
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.h

    r4055 r4057  
    8787                void Constrain(double cm_min, double cm_max);
    8888                void GetVectorFromInputs(Vec vector,int* doflist);
    89                 void GetValuesPtr(double* pvalues,int* pnum_values);
     89                void GetValuesPtr(double** pvalues,int* pnum_values);
    9090                /*}}}*/
    9191
  • issm/trunk/src/c/objects/Inputs/SingVertexInput.cpp

    r4055 r4057  
    258258
    259259}
    260 /2*}}}*/
    261 /*FUNCTION SingVertexInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/
    262 void SingVertexInput::GetValuesPtr(double* pvalues,int* pnum_values){
     260/*}}}*/
     261/*FUNCTION SingVertexInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/
     262void SingVertexInput::GetValuesPtr(double** pvalues,int* pnum_values){
    263263
    264264        *pvalues=&this->value;
  • issm/trunk/src/c/objects/Inputs/SingVertexInput.h

    r4055 r4057  
    7777                void Constrain(double cm_min, double cm_max);
    7878                void GetVectorFromInputs(Vec vector,int* doflist);
    79                 void GetValuesPtr(double* pvalues,int* pnum_values);
     79                void GetValuesPtr(double** pvalues,int* pnum_values);
    8080                /*}}}*/
    8181
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp

    r4055 r4057  
    517517}
    518518/*}}}*/
    519 /*FUNCTION TriaVertexInput::GetValuesPtr(double* pvalues,int* pnum_values);{{{1*/
    520 void TriaVertexInput::GetValuesPtr(double* pvalues,int* pnum_values){
     519/*FUNCTION TriaVertexInput::GetValuesPtr(double** pvalues,int* pnum_values);{{{1*/
     520void TriaVertexInput::GetValuesPtr(double** pvalues,int* pnum_values){
    521521
    522522        *pvalues=this->values;
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.h

    r4055 r4057  
    8484                void Constrain(double cm_min, double cm_max);
    8585                void GetVectorFromInputs(Vec vector,int* doflist);
    86                 void GetValuesPtr(double* pvalues,int* pnum_values);
     86                void GetValuesPtr(double** pvalues,int* pnum_values);
    8787                /*}}}*/
    8888
  • issm/trunk/src/c/objects/Loads/Load.h

    r4043 r4057  
    3434                virtual void  PenaltyCreateKMatrix(Mat Kgg,double kmax)=0;
    3535                virtual void  PenaltyCreatePVector(Vec pg,double kmax)=0;
    36                 virtual bool  InAnalysis(int analysis_type);
     36                virtual bool  InAnalysis(int analysis_type)=0;
    3737};
    3838#endif
  • issm/trunk/src/c/objects/Patch.cpp

    r4042 r4057  
    1414#include "./objects.h"
    1515#include "../DataSet/DataSet.h"
     16#include "../io/io.h"
    1617#include "../EnumDefinitions/EnumDefinitions.h"
    1718#include "../shared/shared.h"
     
    2627        this->maxvertices=0;
    2728        this->maxnodes=0;
    28         this->values=NULL:
     29        this->values=NULL;
    2930}
    3031/*}}}*/
     
    3233Patch::Patch(int in_numrows, int in_maxvertices, int in_maxnodes){
    3334
     35        int i,j;
    3436        this->numrows=in_numrows;
    3537        this->maxvertices=in_maxvertices;
     
    4547
    4648        //allocate and fill with NaN:
    47         this->values=xmalloc(this->numcols*this->numrows*sizeof(double));
     49        this->values=(double*)xmalloc(this->numcols*this->numrows*sizeof(double));
    4850        for(i=0;i<this->numcols;i++){
    49                 for(j=0;j<this->nurows;j++){
     51                for(j=0;j<this->numrows;j++){
    5052                        *(this->values+i*this->numcols+j)=NAN;
    5153                }
     
    105107
    106108        int         i;
     109        int         count;
    107110        extern int  my_rank;
    108111        extern int  num_procs;
     
    110113        int         node_numrows;
    111114        double     *total_values  = NULL;
     115        MPI_Status  status;
    112116
    113117        #ifdef _SERIAL_
     
    126130        if(my_rank==0){
    127131                count=0;
    128                 memcpy(total_values+count,this->values,this->numcols*this->numrifts*sizeof(double));
     132                memcpy(total_values+count,this->values,this->numcols*this->numrows*sizeof(double));
    129133                count+=this->numrows*this->numcols;
    130134        }
     
    159163/*}}}*/
    160164/*FUNCTION Patch::WriteToDisk(int solutiontype,char* filename);{{{1*/
    161 void WriteToDisk(int solutiontype,char* filename){
     165void Patch::WriteToDisk(int solutiontype,char* filename){
    162166
    163167        extern int my_rank;
  • issm/trunk/src/c/shared/Numerics/IsInputConverged.cpp

    r4055 r4057  
    1616void IsInputConverged(double* peps, Input** new_inputs,Input** old_inputs,int num_inputs,int criterion_enum){
    1717
    18         int i;
     18        int i,j;
    1919
    2020        /*output: */
  • issm/trunk/src/c/solutions/ResetBoundaryConditions.cpp

    r4015 r4057  
    1111        int verbose=0;
    1212        Vec ug=NULL;
     13        int analysis_counter;
    1314                       
    1415        femmodel->parameters->FindParam(&verbose,VerboseEnum);
    1516        if(verbose)_printf_("%s\n"," updating boundary conditions...");
    1617                       
    17         GetSolutionFromInputsx( &ug, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,  femmodel->parameters, analysis_type,sub_analysis_type);
     18        GetSolutionFromInputsx( &ug, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,  femmodel->parameters);
    1819
    1920        /*set current analysis: */
     
    2122       
    2223        /*For this analysis_type, free existing boundary condition vectors: */
     24        analysis_counter=femmodel->analysis_counter;
    2325
    2426        //global dof set
    25         VecFree(&femmodel->yg[femmodel->analysis_counter]->vector);
     27        VecFree(&femmodel->m_yg[analysis_counter]);
    2628        //in the s-set
    27         VecFree(&femmodel->ys[analysis_counter]);
     29        VecFree(&femmodel->m_ys[analysis_counter]);
    2830
    2931        //Now, duplicate ug (the solution vector) into the boundary conditions vector on the g-set
    30         VecDuplicatePatch(&femmodel->yg[analysis_counter]->vector,ug);
     32        VecDuplicatePatch(&femmodel->m_yg[analysis_counter],ug);
    3133       
    3234        //Reduce from g to s set
    33         Reducevectorgtosx(&femmodel->ys[analysis_counter],femmodel->yg[analysis_counter]->vector,femmodel->nodesets[analysis_counter]);
     35        Reducevectorgtosx(&femmodel->m_ys[analysis_counter],femmodel->m_yg[analysis_counter],femmodel->m_nodesets[analysis_counter]);
    3436
    3537        /*Free ressources:*/
  • issm/trunk/src/c/solutions/balancedthickness2_core.cpp

    r4055 r4057  
    2626
    2727        _printf_("depth averaging velocity...\n");
    28         DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum);
    29         DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum);
    30         if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum);
     28        DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum,VxAverageEnum);
     29        DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum,VyAverageEnum);
     30        if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum,VzAverageEnum);
    3131
    3232
  • issm/trunk/src/c/solutions/balancedthickness_core.cpp

    r4055 r4057  
    2626
    2727        _printf_("depth averaging velocity...\n");
    28         DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum);
    29         DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum);
    30         if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum);
     28        DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum,VxAverageEnum);
     29        DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum,VyAverageEnum);
     30        if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum,VzAverageEnum);
    3131
    3232        _printf_("call computational core:\n");
  • issm/trunk/src/c/solutions/balancedvelocities_core.cpp

    r4055 r4057  
    2525
    2626        _printf_("depth averaging velocity...\n");
    27         DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum);
    28         DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum);
    29         if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum);
     27        DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum,VxAverageEnum);
     28        DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum,VyAverageEnum);
     29        if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum,VzAverageEnum);
    3030
    3131        _printf_("call computational core:\n");
  • issm/trunk/src/c/solutions/controlconvergence.cpp

    r4048 r4057  
    88#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
    99#endif
     10
     11#include "../objects/objects.h"
     12#include "../shared/shared.h"
     13#include "../DataSet/DataSet.h"
     14#include "../EnumDefinitions/EnumDefinitions.h"
     15#include "../include/include.h"
     16#include "../modules/modules.h"
     17#include "./solutions.h"
     18
    1019
    1120int controlconvergence(double* J, double* fit, double eps_cm, int n){
  • issm/trunk/src/c/solutions/solutions.h

    r4055 r4057  
    3535void convergence(int* pconverged, Mat K_ff,Vec p_f,Vec u_f,Vec u_f_old,Parameters* parameters);
    3636int controlconvergence(double* J, double* fit, double eps_cm, int n);
     37int steadystateconvergence(FemModel* femmodel);
    3738
    3839//optimization
  • issm/trunk/src/c/solutions/steadystate_core.cpp

    r4055 r4057  
    4343               
    4444                if(verbose)_printf_("%s\n","saving velocity, temperature and pressure to check for convergence at next step");
    45                 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum,OldVxEnum);
    46                 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum,OldVyEnum);
    47                 if(dim==3)DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum,OldVzEnum);
    48                 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum,OldPressureEnum);
    49                 DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum,OldTemperatureEnum);
     45                DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum,VxOldEnum);
     46                DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum,VyOldEnum);
     47                if(dim==3)DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum,VzOldEnum);
     48                DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum,PressureOldEnum);
     49                DuplicateInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum,TemperatureOldEnum);
    5050               
    5151                //increase counter
  • issm/trunk/src/c/solutions/steadystateconvergence.cpp

    r4055 r4057  
    99#endif
    1010
     11#include "../objects/objects.h"
     12#include "../shared/shared.h"
     13#include "../DataSet/DataSet.h"
     14#include "../EnumDefinitions/EnumDefinitions.h"
     15#include "../include/include.h"
     16#include "../modules/modules.h"
     17#include "./solutions.h"
     18
    1119int steadystateconvergence(FemModel* femmodel){
    1220       
     
    1725
    1826        /*intermediary: */
    19         int velocityenums[8]={VxEnum,OldVxEnum,VyEnum,OldVyEnum,VzEnum,OldVzEnum,PressureEnum,OldPressureEnum}; //pairs of enums (new and old) on which to carry out the converence tests
    20         int temperatureenums[2]={TemperatureEnum,OldTemperatureEnum};
     27        int velocityenums[8]={VxEnum,VxOldEnum,VyEnum,VyOldEnum,VzEnum,VzOldEnum,PressureEnum,PressureOldEnum}; //pairs of enums (new and old) on which to carry out the converence tests
     28        int temperatureenums[2]={TemperatureEnum,TemperatureOldEnum};
    2129        int convergencecriterion[1]={RelativeEnum}; //criterions for convergence, RelativeEnum or AbsoluteEnum
    22         int convergencecriterionvalue[1]; //value of criterion to be respected
     30        double convergencecriterionvalue[1]; //value of criterion to be respected
    2331
    2432        /*retrieve parameters: */
     
    2634       
    2735        /*figure out convergence at the input level, because we don't have the solution vectors!: */
    28         velocity_converged=InputConvergencex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,velocityenums,8,convergencecriterion,convergencecriterionvalue,1);
    29         temperature_converged=InputConvergencex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,temperatureenums,2,convergencecriterion,convergencecriterionvalue,1);
     36        velocity_converged=InputConvergencex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,&velocityenums[0],8,&convergencecriterion[0],&convergencecriterionvalue[0],1);
     37        temperature_converged=InputConvergencex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,&temperatureenums[0],2,&convergencecriterion[0],&convergencecriterionvalue[0],1);
     38
    3039
    3140        if(velocity_converged && temperature_converged)converged=1;
  • issm/trunk/src/c/solutions/thermal_core_step.cpp

    r4055 r4057  
    1414void thermal_core_step(FemModel* femmodel,int step, double time){
    1515
     16        int verbose;
     17
    1618        //first recover parameters common to all solutions
    1719        femmodel->parameters->FindParam(&verbose,VerboseEnum);
  • issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp

    r4055 r4057  
    77#include "../EnumDefinitions/EnumDefinitions.h"
    88#include "../modules/modules.h"
    9 #include "./solutions.h"
     9#include "../solutions/solutions.h"
     10#include "./solvers.h"
    1011
    1112void solver_diagnostic_nonlinear(Vec* pug,Mat* pKff0,Mat* pKfs0, FemModel* fem,bool conserve_loads){
     
    3738        char* solver_string=NULL;
    3839        int verbose=0;
    39 
    40         //Set active analysis_type:
    41         fem->SetActiveAnalysis(analysis_type);
     40        int dim;
    4241
    4342        /*Recover parameters: */
     
    4544        fem->parameters->FindParam(&numberofnodes,NumberOfNodesEnum);
    4645        fem->parameters->FindParam(&solver_string,SolverStringEnum);
     46        fem->parameters->FindParam(&dim,DimEnum);
    4747        fem->parameters->FindParam(&verbose,VerboseEnum);
    4848        fem->parameters->FindParam(&min_mechanical_constraints,MinMechanicalConstraintsEnum);
     
    137137        if (dim==3){
    138138                if(verbose)_printf_("%s\n","extruding velocity and pressure in 3d...");
    139                 InputsExtrudex( fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,VxEnum,0);
    140                 InputsExtrudex( fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,VyEnum,0);
     139                ExtrudeInputx( fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,VxEnum);
     140                ExtrudeInputx( fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,VyEnum);
    141141        }
    142142
Note: See TracChangeset for help on using the changeset viewer.