Changeset 4043


Ignore:
Timestamp:
Jun 14, 2010, 6:08:59 PM (16 years ago)
Author:
Eric.Larour
Message:

Changing to new framework where analysis_type and sub_analysis_type are picked up in the parameters, whenever needed.
This greatly simplifies the API of the code -> don't have to carry along analysis_type and sub_analysis_type.

Location:
issm/trunk/src
Files:
38 added
196 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/DataSet/DataSet.cpp

    r4034 r4043  
    835835/*}}}*/
    836836/*FUNCTION DataSet::MeltingConstraints{{{1*/
    837 void  DataSet::MeltingConstraints(int* pconverged, int* pnum_unstable_constraints,int analysis_type,int sub_analysis_type){
     837void  DataSet::MeltingConstraints(int* pconverged, int* pnum_unstable_constraints){
    838838
    839839        /* generic object pointer: */
    … …  
    855855                        pengrid=(Pengrid*)(*object);
    856856
    857                         pengrid->PenaltyConstrain(&unstable,analysis_type,sub_analysis_type);
     857                        pengrid->PenaltyConstrain(&unstable);
    858858
    859859                        num_unstable_constraints+=unstable;
  • issm/trunk/src/c/DataSet/DataSet.h

    r4037 r4043  
    5555                void  DistributeDofs(int numberofnodes,int numdofspernode);
    5656                void  CreatePartitioningVector(Vec* ppartition,int numobjects);
    57                 void  DistributeNumDofs(int** pnumdofspernode,int numberofnodes,int analysis_type,int sub_analysis_type);
    5857                void  FlagClones(int numberofnodes);
    5958                int   NumberOfDofs(int analysis_type);
    … …  
    7776                int   RiftIsPresent();
    7877                int   MeltingIsPresent();
    79                 void  MeltingConstraints(int* pconverged, int* pnum_unstable_constraints,int analysis_type,int sub_analysis_type);
     78                void  MeltingConstraints(int* pconverged, int* pnum_unstable_constraints);
    8079                DataSet* Copy(void);
    8180                void  InputExtrude(int enum_type);
  • issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp

    r4039 r4043  
    172172                case PressureEnum : return "Pressure";
    173173                case PressureOldEnum : return "PressureOld";
     174                case QmuPressureEnum : return "QmuPressure";
     175                case StokesPressureEnum : return "StokesPressure";
    174176                case ResetPenaltiesEnum : return "ResetPenalties";
    175177                case RheologyBEnum : return "RheologyB";
    … …  
    191193                case VxObsEnum : return "VxObs";
    192194                case VxOldEnum : return "VxOld";
     195                case QmuVxEnum : return "QmuVx";
    193196                case VyAverageEnum : return "VyAverage";
    194197                case VyEnum : return "Vy";
    195198                case VyObsEnum : return "VyObs";
    196199                case VyOldEnum : return "VyOld";
     200                case QmuVyEnum : return "QmuVy";
    197201                case VzAverageEnum : return "VzAverage";
    198202                case VzEnum : return "Vz";
    199203                case VzObsEnum : return "VzObs";
    200204                case VzOldEnum : return "VzOld";
     205                case QmuVzEnum : return "QmuVz";
    201206                case WeightsEnum : return "Weights";
    202207                case P0Enum : return "P0";
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h

    r4039 r4043  
    201201        PressureEnum,
    202202        PressureOldEnum,
     203        QmuPressureEnum,
     204        StokesPressureEnum,
    203205        ResetPenaltiesEnum,
    204206        RheologyBEnum,
    … …  
    220222        VxObsEnum,
    221223        VxOldEnum,
     224        QmuVxEnum,
    222225        VyAverageEnum,
    223226        VyEnum,
    224227        VyObsEnum,
    225228        VyOldEnum,
     229        QmuVyEnum,
    226230        VzAverageEnum,
    227231        VzEnum,
    228232        VzObsEnum,
    229233        VzOldEnum,
     234        QmuVzEnum,
    230235        WeightsEnum,
    231236        /*}}}*/
  • issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp

    r4039 r4043  
    170170        else if (strcmp(name,"Pressure")==0) return PressureEnum;
    171171        else if (strcmp(name,"PressureOld")==0) return PressureOldEnum;
     172        else if (strcmp(name,"QmuPressure")==0) return QmuPressureEnum;
     173        else if (strcmp(name,"StokesPressure")==0) return StokesPressureEnum;
    172174        else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
    173175        else if (strcmp(name,"RheologyB")==0) return RheologyBEnum;
    … …  
    189191        else if (strcmp(name,"VxObs")==0) return VxObsEnum;
    190192        else if (strcmp(name,"VxOld")==0) return VxOldEnum;
     193        else if (strcmp(name,"QmuVx")==0) return QmuVxEnum;
    191194        else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
    192195        else if (strcmp(name,"Vy")==0) return VyEnum;
    193196        else if (strcmp(name,"VyObs")==0) return VyObsEnum;
    194197        else if (strcmp(name,"VyOld")==0) return VyOldEnum;
     198        else if (strcmp(name,"QmuVy")==0) return QmuVyEnum;
    195199        else if (strcmp(name,"VzAverage")==0) return VzAverageEnum;
    196200        else if (strcmp(name,"Vz")==0) return VzEnum;
    197201        else if (strcmp(name,"VzObs")==0) return VzObsEnum;
    198202        else if (strcmp(name,"VzOld")==0) return VzOldEnum;
     203        else if (strcmp(name,"QmuVz")==0) return QmuVzEnum;
    199204        else if (strcmp(name,"Weights")==0) return WeightsEnum;
    200205        else if (strcmp(name,"P0")==0) return P0Enum;
  • issm/trunk/src/c/issm.h

    r3914 r4043  
    1212#include "./EnumDefinitions/EnumDefinitions.h"
    1313#include "./toolkits/toolkits.h"
     14#include "./solutions/solutions.h"
     15#include "./solvers/solvers.h"
    1416
    1517#endif //ifndef _ISSM_H_
  • issm/trunk/src/c/modules/ComputeBasalStressx/ComputeBasalStressx.cpp

    r3966 r4043  
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    12 void    ComputeBasalStressx( Vec* psigma,DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,Parameters* parameters,
    13                         int analysis_type,int sub_analysis_type){
     12void    ComputeBasalStressx( Vec* psigma,DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,Parameters* parameters){
    1413
    1514        /*Intermediary*/
    … …  
    3736        for (i=0;i<elements->Size();i++){
    3837                element=(Element*)elements->GetObjectByOffset(i);
    39                 element->ComputeBasalStress(sigma,analysis_type,sub_analysis_type);
     38                element->ComputeBasalStress(sigma);
    4039        }
    4140
  • issm/trunk/src/c/modules/ComputePressurex/ComputePressurex.cpp

    r3966 r4043  
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    12 void    ComputePressurex( Vec* pp_g,DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,Parameters* parameters,
    13                         int analysis_type,int sub_analysis_type){
     12void    ComputePressurex( Vec* pp_g,DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,Parameters* parameters){
    1413
    1514        /*intermediary*/
    … …  
    3635        for (i=0;i<elements->Size();i++){
    3736                element=(Element*)elements->GetObjectByOffset(i);
    38                 element->ComputePressure(p_g,analysis_type,sub_analysis_type);
     37                element->ComputePressure(p_g);
    3938        }
    4039
  • issm/trunk/src/c/modules/ComputeStrainRatex/ComputeStrainRatex.cpp

    r3966 r4043  
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    12 void    ComputeStrainRatex( Vec* peps,DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,Parameters* parameters,
    13                         int analysis_type,int sub_analysis_type){
     12void    ComputeStrainRatex( Vec* peps,DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,Parameters* parameters){
    1413
    1514        /*Intermediary*/
    … …  
    3635        for (i=0;i<elements->Size();i++){
    3736                element=(Element*)elements->GetObjectByOffset(i);
    38                 element->ComputeStrainRate(eps,analysis_type,sub_analysis_type);
     37                element->ComputeStrainRate(eps);
    3938        }
    4039
  • issm/trunk/src/c/modules/CostFunctionx/CostFunctionx.cpp

    r3967 r4043  
    1111#include "../SurfaceAreax/SurfaceAreax.h"
    1212
    13 void CostFunctionx( double* pJ, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials,Parameters* parameters,
    14                         int analysis_type,int sub_analysis_type){
     13void CostFunctionx( double* pJ, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials,Parameters* parameters){
    1514
    1615        /*Intermediary*/
    … …  
    3029
    3130        /*Compute surface area: */
    32         SurfaceAreax(&S,elements,nodes,vertices, loads,materials,parameters,analysis_type,sub_analysis_type);
     31        SurfaceAreax(&S,elements,nodes,vertices, loads,materials,parameters);
    3332
    3433        /*add surface area to elements :*/
    … …  
    3837        for (i=0;i<elements->Size();i++){
    3938                element=(Element*)elements->GetObjectByOffset(i);
    40                 J+=element->CostFunction(analysis_type,sub_analysis_type);
     39                J+=element->CostFunction();
    4140        }
    4241
  • issm/trunk/src/c/modules/Dux/Dux.cpp

    r4034 r4043  
    1111#include "../SurfaceAreax/SurfaceAreax.h"
    1212
    13 void Dux( Vec* pdu_g, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads,
    14                 DataSet* materials, Parameters* parameters,int analysis_type,int sub_analysis_type){
     13void Dux( Vec* pdu_g, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters){
    1514
    1615        /*Intermediary*/
    … …  
    2221        Element* element=NULL;
    2322
     23        int analysis_type;
     24
    2425        /*output: */
    2526        Vec du_g=NULL;
     27
     28        /*retrive parameters: */
     29        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
    2630
    2731        /*First, get elements and loads configured: */
    … …  
    3135
    3236        /*Compute surface area: */
    33         SurfaceAreax(&S,elements,nodes,vertices, loads,materials,parameters,analysis_type,sub_analysis_type);
     37        SurfaceAreax(&S,elements,nodes,vertices, loads,materials,parameters);
    3438
    3539        /*add surface area to elements :*/
    … …  
    4549        for (i=0;i<elements->Size();i++){
    4650                element=(Element*)elements->GetObjectByOffset(i);
    47                 element->Du(du_g,analysis_type,sub_analysis_type);
     51                element->Du(du_g);
    4852        }
    4953
  • issm/trunk/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp

    r4034 r4043  
    99#include "../../EnumDefinitions/EnumDefinitions.h"
    1010
    11 void    GetSolutionFromInputsx( Vec* psolution, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters, int analysis_type, int sub_analysis_type){
     11void    GetSolutionFromInputsx( Vec* psolution, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters){
    1212
    1313        /*intermediary: */
    … …  
    1616        Element* element=NULL;
    1717
     18        int analysis_type;
     19
    1820        /*output: */
    1921        Vec solution=NULL;
     22
     23        /*retrive parameters: */
     24        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
    2025
    2126        /*First, get elements and loads configured: */
    … …  
    3439        for (i=0;i<elements->Size();i++){
    3540                element=(Element*)elements->GetObjectByOffset(i);
    36                 element->GetSolutionFromInputs(solution,analysis_type,sub_analysis_type);
     41                element->GetSolutionFromInputs(solution);
    3742        }
    3843
  • issm/trunk/src/c/modules/Gradjx/Gradjx.cpp

    r3967 r4043  
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    12 void Gradjx( Vec* pgrad_g, int numberofnodes, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,
    13                         int analysis_type,int sub_analysis_type,int control_type){
     12void Gradjx( Vec* pgrad_g, int numberofnodes, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,int control_type){
    1413
    1514        /*Intermediary*/
    … …  
    3130        for (i=0;i<elements->Size();i++){
    3231                element=(Element*)elements->GetObjectByOffset(i);
    33                 element->Gradj(grad_g,analysis_type,sub_analysis_type,control_type);
     32                element->Gradj(grad_g,control_type);
    3433        }
    3534
  • issm/trunk/src/c/modules/InputToResultx/InputToResultx.cpp

    r4037 r4043  
    44
    55#include "./InputToResultx.h"
    6 
    76#include "../../shared/shared.h"
    87#include "../../include/include.h"
    … …  
    109#include "../../EnumDefinitions/EnumDefinitions.h"
    1110
    12 void InputToResultx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int enum_type,int step=1, double time=0){
     11void InputToResultx(DataSet* elements,DataSet* nodes,DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,int enum_type,int step, double time){
    1312
    1413        /*intermediary:*/
  • issm/trunk/src/c/modules/MassFluxx/MassFluxx.cpp

    r3913 r4043  
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    12 void MassFluxx(double* pmass_flux, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,  double* segments,int num_segments,double* ug){
     12void MassFluxx(double* pmass_flux, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials,Parameters* parameters,  double* segments,int num_segments){
    1313
    1414        int i,j;
    … …  
    3838                        if (element->Id()==element_id){
    3939                                /*We found the element which owns this segment, use it to compute the mass flux: */
    40                                 mass_flux+=element->MassFlux(segments+5*i+0,ug);
     40                                mass_flux+=element->MassFlux(segments+5*i+0);
    4141                                break;
    4242                        }
  • issm/trunk/src/c/modules/MassFluxx/MassFluxx.h

    r3913 r4043  
    1010
    1111/* local prototypes: */
    12 void MassFluxx(double* pmass_flux, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials, Parameters* parameters,double* segments,int num_segments,double* ug);
     12void MassFluxx(double* pmass_flux, DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads,DataSet* materials, Parameters* parameters,double* segments,int num_segments);
    1313
    1414
  • issm/trunk/src/c/modules/MaxVelx/MaxVelx.cpp

    r4042 r4043  
    1717        double node_maxvel;
    1818        bool   process_units=true;
     19        double element_maxvel;
    1920
    2021        /*First, configure elements:*/
  • issm/trunk/src/c/modules/MinVelx/MinVelx.cpp

    r4042 r4043  
    1717        double node_minvel;
    1818        bool   process_units=true;
     19        double element_minvel;
    1920
    2021        /*First, configure elements:*/
  • issm/trunk/src/c/modules/Misfitx/Misfitx.cpp

    r3967 r4043  
    1111#include "../SurfaceAreax/SurfaceAreax.h"
    1212
    13 void Misfitx( double* pJ, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials,Parameters* parameters,
    14                         int analysis_type,int sub_analysis_type){
     13void Misfitx( double* pJ, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials,Parameters* parameters){
    1514       
    1615        /*Intermediary*/
    … …  
    3029
    3130        /*Compute surface area: */
    32         SurfaceAreax(&S,elements,nodes,vertices, loads,materials,parameters,analysis_type,sub_analysis_type);
     31        SurfaceAreax(&S,elements,nodes,vertices, loads,materials,parameters);
    3332
    3433        /*add surface area to elements :*/
    … …  
    3837        for (i=0;i<elements->Size();i++){
    3938                element=(Element*)elements->GetObjectByOffset(i);
    40                 J+=element->Misfit(analysis_type,sub_analysis_type);
     39                J+=element->Misfit();
    4140        }
    4241
  • issm/trunk/src/c/modules/Misfitx/Misfitx.h

    r3913 r4043  
    1010
    1111/* local prototypes: */
    12 void Misfitx( double* pJ, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,
    13                         int analysis_type,int sub_analysis_type);
     12void Misfitx( double* pJ, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters);
    1413
    1514#endif  /* _MISFITX_H */
  • issm/trunk/src/c/modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp

    r3913 r4043  
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    12 void PenaltyConstraintsx(int* pconverged, int* pnum_unstable_constraints, DataSet* elements,DataSet* nodes, DataSet* vertices,
    13                 DataSet* loads,DataSet* materials,  Parameters* parameters,int analysis_type,int sub_analysis_type){
     12void PenaltyConstraintsx(int* pconverged, int* pnum_unstable_constraints, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads,DataSet* materials,  Parameters* parameters){
    1413
    1514        int i;
    … …  
    3433         * management routine, otherwise, skip : */
    3534        if (RiftIsPresent(loads)){
    36                 RiftConstraints(&converged,&num_unstable_constraints,loads,min_mechanical_constraints,analysis_type,sub_analysis_type);
     35                RiftConstraints(&converged,&num_unstable_constraints,loads,min_mechanical_constraints);
    3736        }
    3837        else if(loads->MeltingIsPresent()){
    39                 loads->MeltingConstraints(&converged,&num_unstable_constraints,analysis_type,sub_analysis_type);
     38                loads->MeltingConstraints(&converged,&num_unstable_constraints);
    4039        }
    4140        else{
  • issm/trunk/src/c/modules/PenaltyConstraintsx/PenaltyConstraintsx.h

    r3913 r4043  
    1010
    1111/* local prototypes: */
    12 void PenaltyConstraintsx(int* pconverged, int* pnum_unstable_constraints, DataSet* elements,DataSet* nodes, DataSet* vertices,
    13                 DataSet* loads,DataSet* materials,  Parameters* parameters,int analysis_type,int sub_analysis_type);
     12void PenaltyConstraintsx(int* pconverged, int* pnum_unstable_constraints, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads,DataSet* materials,  Parameters* parameters);
    1413
    1514#endif  /* _PENALTYCONSTRAINTSX_H */
  • issm/trunk/src/c/modules/PenaltyConstraintsx/RiftConstraints.cpp

    r3913 r4043  
    1010#define _ZIGZAGCOUNTER_
    1111
    12 int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,DataSet* loads,int min_mechanical_constraints,int analysis_type,int sub_analysis_type){
     12int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,DataSet* loads,int min_mechanical_constraints){
    1313
    1414        int num_unstable_constraints=0;
    … …  
    1717        extern int my_rank;
    1818
    19         Constrain(&num_unstable_constraints,loads,analysis_type);
     19        Constrain(&num_unstable_constraints,loads);
    2020        if(num_unstable_constraints==0)converged=1;
    2121       
    … …  
    2727        else if(num_unstable_constraints<=min_mechanical_constraints){
    2828                _printf_("   freezing constraints\n");
    29                 FreezeConstraints(loads,analysis_type);
     29                FreezeConstraints(loads);
    3030        }
    3131
    … …  
    3535}
    3636
    37 int IsMaterialStable(DataSet* loads,int analysis_type){
     37int IsMaterialStable(DataSet* loads){
    3838
    3939        int i;
    … …  
    5050                        riftfront=(Riftfront*)loads->GetObjectByOffset(i);
    5151
    52                         if (riftfront->IsMaterialStable(analysis_type)){
     52                        if (riftfront->IsMaterialStable()){
    5353                                found=1;
    5454                                /*do not break! all penalties should get informed the non-linearity converged!*/
    … …  
    150150}
    151151
    152 int PreConstrain(int* pnum_unstable_constraints,DataSet* loads,int analysis_type){
     152int PreConstrain(int* pnum_unstable_constraints,DataSet* loads){
    153153
    154154        int                     i;
    … …  
    168168                        riftfront=(Riftfront*)loads->GetObjectByOffset(i);
    169169
    170                         riftfront->PreConstrain(&unstable,analysis_type);
     170                        riftfront->PreConstrain(&unstable);
    171171
    172172                        num_unstable_constraints+=unstable;
    … …  
    185185}
    186186
    187 int Constrain(int* pnum_unstable_constraints,DataSet* loads,int analysis_type){
     187int Constrain(int* pnum_unstable_constraints,DataSet* loads){
    188188
    189189        int                     i;
    … …  
    203203                        riftfront=(Riftfront*)loads->GetObjectByOffset(i);
    204204
    205                         riftfront->Constrain(&unstable,analysis_type);
     205                        riftfront->Constrain(&unstable);
    206206
    207207                        num_unstable_constraints+=unstable;
    … …  
    220220}
    221221
    222 void FreezeConstraints(DataSet* loads,int analysis_type){
     222void FreezeConstraints(DataSet* loads){
    223223
    224224        int                     i;
    … …  
    234234                        riftfront=(Riftfront*)loads->GetObjectByOffset(i);
    235235
    236                         riftfront->FreezeConstraints(analysis_type);
     236                        riftfront->FreezeConstraints();
    237237
    238238                }
    … …  
    273273}
    274274
    275 int MaxPenetrationInInputs(DataSet* loads,int analysis_type){
     275int MaxPenetrationInInputs(DataSet* loads){
    276276
    277277        int                     i;
    … …  
    295295                        riftfront=(Riftfront*)loads->GetObjectByOffset(i);
    296296
    297                         riftfront->MaxPenetration(&penetration,analysis_type);
     297                        riftfront->MaxPenetration(&penetration);
    298298
    299299                        if (penetration>max_penetration)max_penetration=penetration;
    … …  
    311311}
    312312
    313 int PotentialUnstableConstraints(DataSet* loads,int analysis_type){
     313int PotentialUnstableConstraints(DataSet* loads){
    314314
    315315        int                     i;
    … …  
    330330                        riftfront=(Riftfront*)loads->GetObjectByOffset(i);
    331331
    332                         riftfront->PotentialUnstableConstraint(&unstable,analysis_type);
     332                        riftfront->PotentialUnstableConstraint(&unstable);
    333333
    334334                        num_unstable_constraints+=unstable;
  • issm/trunk/src/c/modules/PenaltyConstraintsx/RiftConstraints.h

    r3913 r4043  
    1010#include "../../DataSet/DataSet.h"
    1111
    12 int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,DataSet* loads,int min_mechanical_constraints,int analysis_type,int sub_analysis_type);
     12int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,DataSet* loads,int min_mechanical_constraints);
    1313
    1414int RiftIsPresent(DataSet* loads);
    … …  
    1818int SetPreStable(DataSet* loads);
    1919
    20 int PreConstrain(int* pnum_unstable_constraints,DataSet* loads,int analysis_type_enum);
     20int PreConstrain(int* pnum_unstable_constraints,DataSet* loads);
    2121
    22 int Constrain(int* pnum_unstable_constraints,DataSet* loads,int analysis_type_enum);
     22int Constrain(int* pnum_unstable_constraints,DataSet* loads);
    2323
    24 void FreezeConstraints(DataSet* loads,int analysis_type);
     24void FreezeConstraints(DataSet* loads);
    2525
    26 int MaxPenetrationInInputs(DataSet* loads,int analysis_type_enum);
     26int MaxPenetrationInInputs(DataSet* loads);
    2727
    28 int PotentialUnstableConstraints(DataSet* loads,int analysis_type_enum);
     28int PotentialUnstableConstraints(DataSet* loads);
    2929
    30 int IsMaterialStable(DataSet* loads,int analysis_type_enum);
     30int IsMaterialStable(DataSet* loads);
    3131
    3232int IsFrozen(DataSet* loads);
  • issm/trunk/src/c/modules/PenaltySystemMatricesx/PenaltySystemMatricesx.cpp

    r3965 r4043  
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    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        int i;
    … …  
    3231                for (i=0;i<loads->Size();i++){
    3332                        load=(Load*)loads->GetObjectByOffset(i);
    34                         load->PenaltyCreateKMatrix(Kgg,kmax,analysis_type,sub_analysis_type);
     33                        load->PenaltyCreateKMatrix(Kgg,kmax);
    3534                }
    3635
    … …  
    4746                for (i=0;i<loads->Size();i++){
    4847                        load=(Load*)loads->GetObjectByOffset(i);
    49                         load->PenaltyCreatePVector(pg,kmax,analysis_type,sub_analysis_type);
     48                        load->PenaltyCreatePVector(pg,kmax);
    5049                }
    5150
  • issm/trunk/src/c/modules/Qmux/DakotaResponses.cpp

    r4042 r4043  
    1313#include "../../include/include.h"
    1414#include "../../EnumDefinitions/EnumDefinitions.h"
    15 #include "../MassFluxx/MassFluxx.h"
    16 #include "../Misfitx/Misfitx.h"
    1715#include "../modules.h"
    1816
    … …  
    2018
    2119        int i;
     20        int dummy;
    2221        extern int my_rank;
    2322       
    … …  
    7069                }
    7170                else if(strcmp(response_descriptor,"mass_flux")==0){
    72                         MassFlux(&femmodel_response,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     71
     72                        double*   segments=NULL;
     73                        int       num_segments;
     74                       
     75                        /*retrieve qmu_mass_flux_segments: */
     76                        femmodel->parameters->FindParam(&segments,&num_segments,&dummy,QmuMassFluxSegmentsEnum);
     77
     78                        /*call mass flux module: */
     79                        MassFluxx(&femmodel_response,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,segments,num_segments);
     80
     81                        /*Free ressources:*/
     82                        xfree((void**)&segments);
     83
    7384                }
    7485                else{
    … …  
    8192
    8293}
     94
     95
     96
     97
  • issm/trunk/src/c/modules/Qmux/Qmux.h

    r4042 r4043  
    1010
    1111/* local prototypes: */
    12 int SpawnCore(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, void* femmodel,int analysis_type,int sub_analysis_type,int counter);
     12int SpawnCore(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, void* femmodel,int counter);
    1313#ifdef _SERIAL_
    14 void Qmux(mxArray* femmodel,int analysis_type,int sub_analysis_type,char* dakota_input_file,char* dakota_output_file,char* dakota_error_file);
    15 void SpawnCoreSerial(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, mxArray* femmodel,int analysis_type,int sub_analysis_type,int counter);
     14void Qmux(mxArray* femmodel,char* dakota_input_file,char* dakota_output_file,char* dakota_error_file);
     15void SpawnCoreSerial(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, mxArray* femmodel,int counter);
    1616#else
    17 void Qmux(FemModel* femmodel,int analysis_type,int sub_analysis_type);
    18 void SpawnCoreParallel(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, FemModel* femmodel,int analysis_type,int sub_analysis_type,int counter);
    19 void DakotaResponses(double* responses,char** responses_descriptors,int numresponses,FemModel* femmodel,int analysis_type,int sub_analysis_type);
     17void Qmux(FemModel* femmodel);
     18void SpawnCoreParallel(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, FemModel* femmodel,int counter);
     19void DakotaResponses(double* responses,char** responses_descriptors,int numresponses,FemModel* femmodel);
    2020#endif
    2121
  • issm/trunk/src/c/modules/Qmux/SpawnCore.cpp

    r4042 r4043  
    2626        MPI_Bcast(&counter,1,MPI_INT,0,MPI_COMM_WORLD); if(counter==-1)return 0;
    2727       
    28         SpawnCoreParallel(responses, numresponses, variables, variables_descriptors,numvariables, (FemModel*)femmodel);
     28        SpawnCoreParallel(responses, numresponses, variables, variables_descriptors,numvariables, (FemModel*)femmodel,counter);
    2929        #endif
    3030
  • issm/trunk/src/c/modules/Qmux/SpawnCoreParallel.cpp

    r4042 r4043  
    3333#include "../../include/include.h"
    3434#include "../../solutions/solutions.h"
     35#include "../modules.h"
    3536
    3637void SpawnCoreParallel(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, FemModel* femmodel,int counter){
    … …  
    5960               
    6061        /*Recover partitioning for dakota: */
    61         femmodel->FindParam(&qmu_npart,QmuNPartEnum);
    62         femmodel->FindParam(&qmu_part,&dummy,QmuPartEnum);
     62        femmodel->parameters->FindParam(&qmu_npart,QmuNPartEnum);
     63        femmodel->parameters->FindParam(&qmu_part,&dummy,QmuPartEnum);
    6364
    6465        /*broadcast variables: only cpu 0 has correct values*/
    … …  
    8889
    8990        /*Modify core inputs in objects contained in femmodel, to reflect the dakota variables inputs: */
    90         UpdateFromDakota(variables,variables_descriptors,numvariables,femmodel,qmu_part,qmu_npart);
     91        UpdateInputsFromDakotax(variables,variables_descriptors,numvariables,femmodel,qmu_part,qmu_npart);
    9192
    9293        /*Run the analysis core solution sequence: */
    … …  
    120121        /*compute responses on cpu 0: dummy for now! */
    121122        if(verbose)_printf_("compute dakota responses:\n");
    122         DakotaResponses(responses,responses_descriptors,numresponses,femmodel,results,processed_results);
     123        DakotaResponses(responses,responses_descriptors,numresponses,femmodel);
    123124
    124125        /*Free ressources:*/
  • issm/trunk/src/c/modules/Qmux/SpawnCoreSerial.cpp

    r3913 r4043  
    1919#include "../../include/include.h"
    2020
    21 void SpawnCoreSerial(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, mxArray* model,int analysis_type,int sub_analysis_type,int counter){
     21void SpawnCoreSerial(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, mxArray* modelint counter){
    2222
    2323        int i;
    … …  
    2727        double*  variables_copy=NULL;
    2828        mxArray* mxvariabledescriptors=NULL;
    29         mxArray* mxanalysis_type=NULL;
    30         mxArray* mxsub_analysis_type=NULL;
    3129        mxArray* mxcounter=NULL;
    3230        mwSize   dims[2]={0};
    … …  
    5149        }
    5250
    53         mxanalysis_type=mxCreateDoubleScalar((double)analysis_type);
    54         mxsub_analysis_type=mxCreateDoubleScalar((double)sub_analysis_type);
    5551        mxcounter=mxCreateDoubleScalar((double)counter);
    5652
    … …  
    5955        array[2]=mxvariables;
    6056        array[3]=mxvariabledescriptors;
    61         array[4]=mxanalysis_type;
    62         array[5]=mxsub_analysis_type;
    63         array[6]=mxcounter;
     57        array[4]=mxcounter;
    6458
    65         mexCallMATLAB(1,&mxresponses,7,array,"SpawnCore");
     59        mexCallMATLAB(1,&mxresponses,5,array,"SpawnCore");
    6660
    6761        /*copy responses back to dakota: */
    … …  
    7266        mxDestroyArray(mxvariabledescriptors);
    7367        mxDestroyArray(mxresponses);
    74         mxDestroyArray(mxanalysis_type);
    75         mxDestroyArray(mxsub_analysis_type);
    7668        mxDestroyArray(mxcounter);
    7769
  • issm/trunk/src/c/modules/SurfaceAreax/SurfaceAreax.cpp

    r3968 r4043  
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    12 void SurfaceAreax( double* pS, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials,Parameters* parameters,
    13                         int analysis_type,int sub_analysis_type){
     12void SurfaceAreax( double* pS, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials,Parameters* parameters){
    1413       
    1514        /*Intermediary*/
    … …  
    2827        for (i=0;i<elements->Size();i++){
    2928                element=(Element*)elements->GetObjectByOffset(i);
    30                 S+=element->SurfaceArea(analysis_type,sub_analysis_type);
     29                S+=element->SurfaceArea();
    3130        }
    3231
  • issm/trunk/src/c/modules/SurfaceAreax/SurfaceAreax.h

    r3913 r4043  
    1010
    1111/* local prototypes: */
    12 void SurfaceAreax( double* pS, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,
    13                         int analysis_type,int sub_analysis_type);
     12void SurfaceAreax( double* pS, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters);
    1413
    1514#endif  /* _SURFACEAREAX_H */
  • issm/trunk/src/c/modules/SystemMatricesx/SystemMatricesx.cpp

    r4034 r4043  
    1010#include "../../EnumDefinitions/EnumDefinitions.h"
    1111
    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        /*intermediary: */
    … …  
    2524        Vec pg=NULL;
    2625
     26        int analysis_type;
     27
    2728        /*First, get elements and loads configured: */
    2829        elements->  Configure(elements,loads, nodes,vertices, materials,parameters);
    … …  
    3031        loads->     Configure(elements, loads, nodes,vertices, materials,parameters);
    3132        parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
     33
     34        /*retrive parameters: */
     35        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
    3236
    3337        /*Recover parameters: */
    … …  
    4751                for (i=0;i<elements->Size();i++){
    4852                        element=(Element*)elements->GetObjectByOffset(i);
    49                         element->CreateKMatrix(Kgg,analysis_type,sub_analysis_type);
     53                        element->CreateKMatrix(Kgg);
    5054                }
    5155
    … …  
    5357                for (i=0;i<loads->Size();i++){
    5458                        load=(Load*)loads->GetObjectByOffset(i);
    55                         load->CreateKMatrix(Kgg,analysis_type,sub_analysis_type);
     59                        load->CreateKMatrix(Kgg);
    5660                }
    5761
    … …  
    7175                for (i=0;i<elements->Size();i++){
    7276                        element=(Element*)elements->GetObjectByOffset(i);
    73                         element->CreatePVector(pg,analysis_type,sub_analysis_type);
     77                        element->CreatePVector(pg);
    7478                }
    7579
    … …  
    7781                for (i=0;i<loads->Size();i++){
    7882                        load=(Load*)loads->GetObjectByOffset(i);
    79                         load->CreatePVector(pg,analysis_type,sub_analysis_type);
     83                        load->CreatePVector(pg);
    8084                }
    8185
  • issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp

    r4042 r4043  
    99#include "../../EnumDefinitions/EnumDefinitions.h"
    1010
    11 void UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,Vec solution, int analysis_type, int sub_analysis_type){
     11void UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,Vec solution){
    1212
    1313        double* serial_solution=NULL;
    … …  
    1717
    1818        /*Call overloaded form of UpdateInputsFromSolutionx: */
    19         UpdateInputsFromSolutionx( elements, nodes,  vertices,  loads,  materials,  parameters,serial_solution, analysis_type, sub_analysis_type);
     19        UpdateInputsFromSolutionx( elements, nodes,  vertices,  loads,  materials,  parameters,serial_solution);
    2020
    2121        /*Free ressources:*/
    … …  
    2525
    2626
    27 void UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution, int analysis_type, int sub_analysis_type){
     27void UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution){
    2828
    2929        /*Intermediary*/
    … …  
    4040        for (i=0;i<elements->Size();i++){
    4141                element=(Element*)elements->GetObjectByOffset(i);
    42                 element->UpdateInputsFromSolution(solution,analysis_type,sub_analysis_type);
     42                element->UpdateInputsFromSolution(solution);
    4343        }
    4444
  • issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h

    r4037 r4043  
    1010
    1111/* local prototypes: */
    12 void            UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,Vec solution, int analysis_type, int sub_analysis_type);
    13 void        UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution, int analysis_type, int sub_analysis_type);
     12void            UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,Vec solution);
     13void        UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution);
    1414
    1515//with timestep
    16 void            UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,Vec solution, int analysis_type, int sub_analysis_type,int timestep);
    17 void        UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution, int analysis_type, int sub_analysis_type,int timestep);
     16void            UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,Vec solution,int timestep);
     17void        UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution, int timestep);
    1818
    1919#endif  /* _UPDATEINPUTSFROMSOLUTIONXX_H */
  • issm/trunk/src/c/modules/modules.h

    r4042 r4043  
    3030#include "./UpdateInputsFromConstantx/UpdateInputsFromConstantx.h"
    3131#include "./UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h"
     32#include "./UpdateInputsFromDakotax/UpdateInputsFromDakotax.h"
    3233#include "./UpdateInputsFromVectorx/UpdateInputsFromVectorx.h"
    3334#include "./UpdateGeometryx/UpdateGeometryx.h"
    … …  
    6869#include "./MinVelx/MinVelx.h"
    6970#include "./MaxVelx/MaxVelx.h"
     71#include "./MinVxx/MinVxx.h"
     72#include "./MaxVxx/MaxVxx.h"
     73#include "./MaxAbsVxx/MaxAbsVxx.h"
     74#include "./MinVyx/MinVyx.h"
     75#include "./MaxVyx/MaxVyx.h"
     76#include "./MaxAbsVyx/MaxAbsVyx.h"
     77#include "./MinVzx/MinVzx.h"
     78#include "./MaxVzx/MaxVzx.h"
     79#include "./MaxAbsVzx/MaxAbsVzx.h"
     80#include "./ReinitializeInputx/ReinitializeInputx.h"
     81
    7082#endif
  • issm/trunk/src/c/objects/Constraints/Rgb.h

    r4003 r4043  
    4141                void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
    4242                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    43 
    44                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     43                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    4544
    4645
  • issm/trunk/src/c/objects/Constraints/Spc.cpp

    r4003 r4043  
    122122}               
    123123/*}}}1*/
    124 /*FUNCTION Spc::DistributeNumDofs {{{1*/
    125 void  Spc::DistributeNumDofs(int* numdofspernode,int analysis_type){return;}
    126 /*}}}1*/
    127124/*FUNCTION Spc::Echo {{{1*/
    128125void Spc::Echo(void){
  • issm/trunk/src/c/objects/Constraints/Spc.h

    r4003 r4043  
    3535                int    Id();
    3636                int    MyRank();
    37                 void   DistributeNumDofs(int* numdofspernode,int analysis_type);
    3837                int    GetNodeId();
    3938                int    GetDof();
    … …  
    4645                void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
    4746                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    48                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     47                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    4948                bool    InAnalysis(int analysis_type);
    5049
  • issm/trunk/src/c/objects/DofVec.h

    r3751 r4043  
    5353                void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
    5454                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    55                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     55                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    5656                Object* copy();
    5757
  • issm/trunk/src/c/objects/Elements/Beam.cpp

    r4042 r4043  
    131131/*}}}*/
    132132/*FUNCTION Beam::UpdateInputsFromSolution {{{1*/
    133 void  Beam::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
    134         ISSMERROR(" not supported yet!");
    135 }
    136 /*}}}*/
    137 /*FUNCTION Beam::GetSolutionFromInputs(Vec solution,  int analysis_type,int sub_analysis_type);{{{1*/
    138 void  Beam::GetSolutionFromInputs(Vec solution,  int analysis_type,int sub_analysis_type){
     133void  Beam::UpdateInputsFromSolution(double* solution){
     134        ISSMERROR(" not supported yet!");
     135}
     136/*}}}*/
     137/*FUNCTION Beam::GetSolutionFromInputs(Vec solution);{{{1*/
     138void  Beam::GetSolutionFromInputs(Vec solution){
    139139        ISSMERROR(" not supported yet!");
    140140}
    … …  
    153153/*Object functions*/
    154154/*FUNCTION Beam::ComputeBasalStress{{{1*/
    155 void  Beam::ComputeBasalStress(Vec eps,int analysis_type,int sub_analysis_type){
     155void  Beam::ComputeBasalStress(Vec eps){
    156156
    157157        ISSMERROR("Not implemented yet");
    … …  
    160160/*}}}*/
    161161/*FUNCTION Beam::ComputePressure{{{1*/
    162 void  Beam::ComputePressure(Vec p_g,int analysis_type,int sub_analysis_type){
     162void  Beam::ComputePressure(Vec p_g){
    163163
    164164        int i;
    … …  
    170170        double xyz_list[numgrids][3];
    171171        double gauss[numgrids][numgrids]={{1,0},{0,1}};
     172        int analysis_type,sub_analysis_type;
     173
     174        /*retrive parameters: */
     175        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     176        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    172177
    173178        /*Get dof list on which we will plug the pressure values: */
    … …  
    196201/*}}}*/
    197202/*FUNCTION Beam::ComputeStrainRate{{{1*/
    198 void  Beam::ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type){
     203void  Beam::ComputeStrainRate(Vec eps){
    199204
    200205        ISSMERROR("Not implemented yet");
    … …  
    203208/*}}}*/
    204209/*FUNCTION Beam::CostFunction{{{1*/
    205 double Beam::CostFunction(int,int){
     210double Beam::CostFunction(void){
    206211        ISSMERROR(" not supported yet!");
    207212}
    208213/*}}}*/
    209214/*FUNCTION Beam::CreateKMatrix{{{1*/
    210 void  Beam::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){
     215void  Beam::CreateKMatrix(Mat Kgg){
     216
     217        int analysis_type,sub_analysis_type;
     218
     219        /*retrive parameters: */
     220        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     221        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    211222
    212223        /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
    … …  
    215226                if (sub_analysis_type==HutterAnalysisEnum) {
    216227
    217                         CreateKMatrixDiagnosticHutter( Kgg,analysis_type,sub_analysis_type);
     228                        CreateKMatrixDiagnosticHutter( Kgg);
    218229                }
    219230                else
    … …  
    228239/*FUNCTION Beam::CreateKMatrixDiagnosticHutter{{{1*/
    229240
    230 void  Beam::CreateKMatrixDiagnosticHutter(Mat Kgg,int analysis_type,int sub_analysis_type){
     241void  Beam::CreateKMatrixDiagnosticHutter(Mat Kgg){
    231242       
    232243       
    … …  
    279290/*}}}*/
    280291/*FUNCTION Beam::CreatePVector{{{1*/
    281 void  Beam::CreatePVector(Vec pg,int analysis_type,int sub_analysis_type){
     292void  Beam::CreatePVector(Vec pg){
     293
     294        int analysis_type,sub_analysis_type;
     295
     296        /*retrive parameters: */
     297        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     298        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    282299       
    283300        /*Just branch to the correct load generator, according to the type of analysis we are carrying out: */
    284301        if (analysis_type==DiagnosticAnalysisEnum) {
    285302                if (sub_analysis_type==HutterAnalysisEnum) {
    286                         CreatePVectorDiagnosticHutter( pg,analysis_type,sub_analysis_type);
     303                        CreatePVectorDiagnosticHutter( pg);
    287304                }
    288305                else
    … …  
    297314/*FUNCTION Beam::CreatePVectorDiagnosticHutter{{{1*/
    298315
    299 void Beam::CreatePVectorDiagnosticHutter( Vec pg,  int analysis_type,int sub_analysis_type){
     316void Beam::CreatePVectorDiagnosticHutter( Vec pg){
    300317
    301318        int i,j,k;
    … …  
    425442/*}}}*/
    426443/*FUNCTION Beam::Du{{{1*/
    427 void  Beam::Du(Vec,int,int){
     444void  Beam::Du(Vec){
    428445        ISSMERROR(" not supported yet!");
    429446}
    … …  
    545562/*}}}*/
    546563/*FUNCTION Beam::Gradj{{{1*/
    547 void  Beam::Gradj(Vec, int, int,int){
     564void  Beam::Gradj(Vec, int control_type){
    548565        ISSMERROR(" not supported yet!");
    549566}
    550567/*}}}*/
    551568/*FUNCTION Beam::GradjB{{{1*/
    552 void  Beam::GradjB(Vec, int, int){
     569void  Beam::GradjB(Vec){
    553570        ISSMERROR(" not supported yet!");
    554571}
    555572/*}}}*/
    556573/*FUNCTION Beam::GradjDrag{{{1*/
    557 void  Beam::GradjDrag(Vec, int,int ){
     574void  Beam::GradjDrag(Vec){
    558575        ISSMERROR(" not supported yet!");
    559576}
    560577/*}}}*/
    561578/*FUNCTION Beam::MassFlux{{{1*/
    562 double Beam::MassFlux( double* segment,double* ug){
     579double Beam::MassFlux( double* segment){
    563580        ISSMERROR(" not supported yet!");
    564581}
    565582/*}}}*/
    566583/*FUNCTION Beam::Misfit{{{1*/
    567 double Beam::Misfit(int,int){
     584double Beam::Misfit(void){
    568585        ISSMERROR(" not supported yet!");
    569586}
    … …  
    576593/*}}}*/
    577594/*FUNCTION Beam::SurfaceArea{{{1*/
    578 double Beam::SurfaceArea(int,int){
     595double Beam::SurfaceArea(void){
    579596        ISSMERROR(" not supported yet!");
    580597}
    … …  
    639656void  Beam::MinVel(double* pminvel, bool process_units){
    640657
     658        int i;
     659        int dim;
    641660        const int numgrids=2;
    642661        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
    … …  
    657676        /*now, compute minimum of velocity :*/
    658677        if(dim==2){
    659                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
     678                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
    660679        }
    661680        else{
    662                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
     681                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
    663682        }
    664683
    … …  
    677696void  Beam::MaxVel(double* pmaxvel, bool process_units){
    678697
     698        int i;
     699        int dim;
    679700        const int numgrids=2;
    680701        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
    … …  
    695716        /*now, compute maximum of velocity :*/
    696717        if(dim==2){
    697                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
     718                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
    698719        }
    699720        else{
    700                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
     721                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
    701722        }
    702723
    … …  
    712733}
    713734/*}}}*/
     735/*FUNCTION Beam::MinVx(double* pminvx, bool process_units);{{{1*/
     736void  Beam::MinVx(double* pminvx, bool process_units){
     737
     738        int i;
     739        int dim;
     740        const int numgrids=2;
     741        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
     742        double  vx_values[numgrids];
     743        double  minvx;
     744
     745        /*retrieve dim parameter: */
     746        parameters->FindParam(&dim,DimEnum);
     747
     748        /*retrive velocity values at nodes */
     749        inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numgrids,VxEnum);
     750
     751        /*now, compute minimum:*/
     752        minvx=vx_values[0];
     753        for(i=1;i<numgrids;i++){
     754                if (vx_values[i]<minvx)minvx=vx_values[i];
     755        }
     756
     757        /*Assign output pointers:*/
     758        *pminvx=minvx;
     759
     760}
     761/*}}}*/
     762/*FUNCTION Beam::MaxVx(double* pmaxvx, bool process_units);{{{1*/
     763void  Beam::MaxVx(double* pmaxvx, bool process_units){
     764
     765        int i;
     766        int dim;
     767        const int numgrids=2;
     768        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
     769        double  vx_values[numgrids];
     770        double  maxvx;
     771
     772        /*retrieve dim parameter: */
     773        parameters->FindParam(&dim,DimEnum);
     774
     775        /*retrive velocity values at nodes */
     776        inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numgrids,VxEnum);
     777
     778        /*now, compute maximum:*/
     779        maxvx=vx_values[0];
     780        for(i=1;i<numgrids;i++){
     781                if (vx_values[i]>maxvx)maxvx=vx_values[i];
     782        }
     783
     784        /*Assign output pointers:*/
     785        *pmaxvx=maxvx;
     786
     787}
     788/*}}}*/
     789/*FUNCTION Beam::MaxAbsVx(double* pmaxabsvx, bool process_units);{{{1*/
     790void  Beam::MaxAbsVx(double* pmaxabsvx, bool process_units){
     791
     792        int i;
     793        int dim;
     794        const int numgrids=2;
     795        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
     796        double  vx_values[numgrids];
     797        double  maxabsvx;
     798
     799        /*retrieve dim parameter: */
     800        parameters->FindParam(&dim,DimEnum);
     801
     802        /*retrive velocity values at nodes */
     803        inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numgrids,VxEnum);
     804
     805        /*now, compute maximum:*/
     806        maxabsvx=fabs(vx_values[0]);
     807        for(i=1;i<numgrids;i++){
     808                if (fabs(vx_values[i])>maxabsvx)maxabsvx=fabs(vx_values[i]);
     809        }
     810
     811        /*Assign output pointers:*/
     812        *pmaxabsvx=maxabsvx;
     813}
     814/*}}}*/
     815/*FUNCTION Beam::MinVy(double* pminvy, bool process_units);{{{1*/
     816void  Beam::MinVy(double* pminvy, bool process_units){
     817
     818        int i;
     819        int dim;
     820        const int numgrids=2;
     821        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
     822        double  vy_values[numgrids];
     823        double  minvy;
     824
     825        /*retrieve dim parameter: */
     826        parameters->FindParam(&dim,DimEnum);
     827
     828        /*retrive velocity values at nodes */
     829        inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numgrids,VyEnum);
     830
     831        /*now, compute minimum:*/
     832        minvy=vy_values[0];
     833        for(i=1;i<numgrids;i++){
     834                if (vy_values[i]<minvy)minvy=vy_values[i];
     835        }
     836
     837        /*Assign output pointers:*/
     838        *pminvy=minvy;
     839
     840}
     841/*}}}*/
     842/*FUNCTION Beam::MaxVy(double* pmaxvy, bool process_units);{{{1*/
     843void  Beam::MaxVy(double* pmaxvy, bool process_units){
     844
     845        int i;
     846        int dim;
     847        const int numgrids=2;
     848        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
     849        double  vy_values[numgrids];
     850        double  maxvy;
     851
     852        /*retrieve dim parameter: */
     853        parameters->FindParam(&dim,DimEnum);
     854
     855        /*retrive velocity values at nodes */
     856        inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numgrids,VyEnum);
     857
     858        /*now, compute maximum:*/
     859        maxvy=vy_values[0];
     860        for(i=1;i<numgrids;i++){
     861                if (vy_values[i]>maxvy)maxvy=vy_values[i];
     862        }
     863
     864        /*Assign output pointers:*/
     865        *pmaxvy=maxvy;
     866
     867}
     868/*}}}*/
     869/*FUNCTION Beam::MaxAbsVy(double* pmaxabsvy, bool process_units);{{{1*/
     870void  Beam::MaxAbsVy(double* pmaxabsvy, bool process_units){
     871
     872        int i;
     873        int dim;
     874        const int numgrids=2;
     875        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
     876        double  vy_values[numgrids];
     877        double  maxabsvy;
     878
     879        /*retrieve dim parameter: */
     880        parameters->FindParam(&dim,DimEnum);
     881
     882        /*retrive velocity values at nodes */
     883        inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numgrids,VyEnum);
     884
     885        /*now, compute maximum:*/
     886        maxabsvy=fabs(vy_values[0]);
     887        for(i=1;i<numgrids;i++){
     888                if (fabs(vy_values[i])>maxabsvy)maxabsvy=fabs(vy_values[i]);
     889        }
     890
     891        /*Assign output pointers:*/
     892        *pmaxabsvy=maxabsvy;
     893}
     894/*}}}*/
     895/*FUNCTION Beam::MinVz(double* pminvz, bool process_units);{{{1*/
     896void  Beam::MinVz(double* pminvz, bool process_units){
     897
     898        int i;
     899        int dim;
     900        const int numgrids=2;
     901        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
     902        double  vz_values[numgrids];
     903        double  minvz;
     904
     905        /*retrieve dim parameter: */
     906        parameters->FindParam(&dim,DimEnum);
     907
     908        /*retrive velocity values at nodes */
     909        inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numgrids,VzEnum);
     910
     911        /*now, compute minimum:*/
     912        minvz=vz_values[0];
     913        for(i=1;i<numgrids;i++){
     914                if (vz_values[i]<minvz)minvz=vz_values[i];
     915        }
     916
     917        /*Assign output pointers:*/
     918        *pminvz=minvz;
     919
     920}
     921/*}}}*/
     922/*FUNCTION Beam::MaxVz(double* pmaxvz, bool process_units);{{{1*/
     923void  Beam::MaxVz(double* pmaxvz, bool process_units){
     924
     925        int i;
     926        int dim;
     927        const int numgrids=2;
     928        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
     929        double  vz_values[numgrids];
     930        double  maxvz;
     931
     932        /*retrieve dim parameter: */
     933        parameters->FindParam(&dim,DimEnum);
     934
     935        /*retrive velocity values at nodes */
     936        inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numgrids,VzEnum);
     937
     938        /*now, compute maximum:*/
     939        maxvz=vz_values[0];
     940        for(i=1;i<numgrids;i++){
     941                if (vz_values[i]>maxvz)maxvz=vz_values[i];
     942        }
     943
     944        /*Assign output pointers:*/
     945        *pmaxvz=maxvz;
     946
     947}
     948/*}}}*/
     949/*FUNCTION Beam::MaxAbsVz(double* pmaxabsvz, bool process_units);{{{1*/
     950void  Beam::MaxAbsVz(double* pmaxabsvz, bool process_units){
     951
     952        int i;
     953        int dim;
     954        const int numgrids=2;
     955        double  gaussgrids[numgrids][2]={{0,1},{1,0}};
     956        double  vz_values[numgrids];
     957        double  maxabsvz;
     958
     959        /*retrieve dim parameter: */
     960        parameters->FindParam(&dim,DimEnum);
     961
     962        /*retrive velocity values at nodes */
     963        inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numgrids,VzEnum);
     964
     965        /*now, compute maximum:*/
     966        maxabsvz=fabs(vz_values[0]);
     967        for(i=1;i<numgrids;i++){
     968                if (fabs(vz_values[i])>maxabsvz)maxabsvz=fabs(vz_values[i]);
     969        }
     970
     971        /*Assign output pointers:*/
     972        *pmaxabsvz=maxabsvz;
     973}
     974/*}}}*/
     975/*FUNCTION Beam::ReinitializeInput(int reinitialized_enum,int original_enum){{{1*/
     976void  Beam::ReinitializeInput(int reinitialized_enum,int original_enum){
     977
     978        Input* original=NULL;
     979        Input* copy=NULL;
     980
     981        /*Make a copy of the original input: */
     982        original=(Input*)this->inputs->GetInput(original_enum);
     983        copy=(Input*)original->copy();
     984
     985        /*Change copy enum to reinitialized_enum: */
     986        copy->ChangeEnum(reinitialized_enum);
     987
     988        /*Add copy into inputs, it will wipe off the one already there: */
     989        inputs->AddObject((Input*)copy);
     990}
     991/*}}}*/
  • issm/trunk/src/c/objects/Elements/Beam.h

    r4042 r4043  
    6161                void  UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
    6262                void  UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    63                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
     63                void  UpdateInputsFromSolution(double* solution);
    6464                void  DepthAverageInputAtBase(int enum_type){ISSMERROR("not implemented yet");};
    6565                void  InputToResult(int enum_type,int step,double time);
    … …  
    6767                /*}}}*/
    6868                /*numerics: {{{1*/
    69                 void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
    70                 void  CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type);
    71                 void  GetSolutionFromInputs(Vec solution,  int analysis_type,int sub_analysis_type);
     69                void  CreateKMatrix(Mat Kgg);
     70                void  CreatePVector(Vec pg);
     71                void  GetSolutionFromInputs(Vec solution);
    7272                void  GetDofList(int* doflist,int* pnumberofdofs);
    7373                void  GetDofList1(int* doflist);
    74                 void  CreateKMatrixDiagnosticHutter(Mat Kgg,int analysis_type,int sub_analysis_type);
     74                void  CreateKMatrixDiagnosticHutter(Mat Kgg);
    7575                void  GetParameterValue(double* pp, double* plist, double* gauss_l1l2l3);
    76                 void  CreatePVectorDiagnosticHutter(Vec pg,int analysis_type,int sub_analysis_type);
     76                void  CreatePVectorDiagnosticHutter(Vec pg);
    7777                void* GetMatPar();
    7878
    79                 void  ComputeBasalStress(Vec sigma_b,int analysis_type,int sub_analysis_type);
    80                 void  ComputePressure(Vec p_g,int analysis_type,int sub_analysis_type);
    81                 void  ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type);
     79                void  ComputeBasalStress(Vec sigma_bg);
     80                void  ComputePressure(Vec p_gg);
     81                void  ComputeStrainRate(Vec epsg);
    8282                void  GetNodes(void** vpnodes);
    8383                void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
    … …  
    8585                void  MinVel(double* pminvel, bool process_units);
    8686                void  MaxVel(double* pmaxvel, bool process_units);
     87                void  MinVx(double* pminvx, bool process_units);
     88                void  MaxVx(double* pmaxvx, bool process_units);
     89                void  MaxAbsVx(double* pmaxabsvx, bool process_units);
     90                void  MinVy(double* pminvy, bool process_units);
     91                void  MaxVy(double* pmaxvy, bool process_units);
     92                void  MaxAbsVy(double* pmaxabsvy, bool process_units);
     93                void  MinVz(double* pminvz, bool process_units);
     94                void  MaxVz(double* pmaxvz, bool process_units);
     95                void  MaxAbsVz(double* pmaxabsvz, bool process_units);
     96                void  ReinitializeInput(int reinitialized_enum,int original_enum);
     97
    8798                /*}}}*/
    8899                /*not implemented: {{{1*/
    … …  
    91102                void  GetBedList(double*);
    92103                void  GetThicknessList(double* thickness_list);
    93                 void  Du(Vec, int,int);
    94                 void  Gradj(Vec,  int, int,int);
    95                 void  GradjDrag(Vec,  int,int );
    96                 void  GradjB(Vec,  int,int );
    97                 double Misfit(int,int);
    98                 double SurfaceArea(int,int);
    99                 double CostFunction(int,int);
     104                void  Du(Vec);
     105                void  Gradj(Vec,  int control_type);
     106                void  GradjDrag(Vec);
     107                void  GradjB(Vec);
     108                double Misfit(void);
     109                double SurfaceArea(void);
     110                double CostFunction(void);
    100111                void  GetNodalFunctions(double* l1l2, double gauss_coord);
    101112                void  GetParameterValue(double* pvalue, double* value_list,double gauss_coord);
    102113                void  GetJacobianDeterminant(double* pJdet,double* z_list, double gauss_coord);
    103                 double MassFlux(double* segment,double* ug);
     114                double MassFlux(double* segment);
    104115                /*}}}*/
    105116
  • issm/trunk/src/c/objects/Elements/Element.h

    r4042 r4043  
    2727                virtual void   Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters)=0;
    2828               
    29                 virtual void   CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type)=0;
    30                 virtual void   CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type)=0;
    31                 virtual void   GetSolutionFromInputs(Vec solution,  int analysis_type,int sub_analysis_type)=0;
     29                virtual void   CreateKMatrix(Mat Kgg)=0;
     30                virtual void   CreatePVector(Vec pg)=0;
     31                virtual void   GetSolutionFromInputs(Vec solution)=0;
    3232                virtual void   GetNodes(void** nodes)=0;
    3333                virtual void*  GetMatPar()=0;
    … …  
    3636                virtual void   GetThicknessList(double* thickness_list)=0;
    3737                virtual void   GetBedList(double* bed_list)=0;
    38                 virtual void   Du(Vec du_g,int analysis_type,int sub_analysis_type)=0;
    39                 virtual void   Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type)=0;
    40                 virtual void   GradjDrag(Vec grad_g,int analysis_type,int sub_analysis_type)=0;
    41                 virtual void   GradjB(Vec grad_g,int analysis_type,int sub_analysis_type)=0;
    42                 virtual double Misfit(int analysis_type,int sub_analysis_type)=0;
    43                 virtual double CostFunction(int analysis_type,int sub_analysis_type)=0;
    44                 virtual double SurfaceArea(int analysis_type,int sub_analysis_type)=0;
     38                virtual void   Du(Vec du_g)=0;
     39                virtual void   Gradj(Vec grad_g,int control_type)=0;
     40                virtual void   GradjDrag(Vec grad_g)=0;
     41                virtual void   GradjB(Vec grad_g)=0;
     42                virtual double Misfit(void)=0;
     43                virtual double CostFunction(void)=0;
     44                virtual double SurfaceArea(void)=0;
    4545                virtual void   DepthAverageInputAtBase(int enum_type)=0;
    46                 virtual void   ComputeBasalStress(Vec sigma_b,int analysis_type,int sub_analysis_type)=0;
    47                 virtual void   ComputePressure(Vec p_g,       int analysis_type,int sub_analysis_type)=0;
    48                 virtual void   ComputeStrainRate(Vec eps,     int analysis_type,int sub_analysis_type)=0;
    49                 virtual double MassFlux(double* segment,double* ug)=0;
     46                virtual void   ComputeBasalStress(Vec sigma_b)=0;
     47                virtual void   ComputePressure(Vec p_g)=0;
     48                virtual void   ComputeStrainRate(Vec eps)=0;
     49                virtual double MassFlux(double* segment)=0;
    5050                virtual void   PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes)=0;
    5151                virtual void   PatchFill(int* pcount, Patch* patch)=0;
    … …  
    5555                virtual void   MinVel(double* pminvel, bool process_units)=0;
    5656                virtual void   MaxVel(double* pmaxvel, bool process_units)=0;
     57                virtual void   MinVx(double* pminvx, bool process_units)=0;
     58                virtual void   MaxVx(double* pmaxvx, bool process_units)=0;
     59                virtual void   MaxAbsVx(double* pmaxabsvx, bool process_units)=0;
     60                virtual void   MinVy(double* pminvy, bool process_units)=0;
     61                virtual void   MaxVy(double* pmaxvy, bool process_units)=0;
     62                virtual void   MaxAbsVy(double* pmaxabsvy, bool process_units)=0;
     63                virtual void   MinVz(double* pminvz, bool process_units)=0;
     64                virtual void   MaxVz(double* pmaxvz, bool process_units)=0;
     65                virtual void   MaxAbsVz(double* pmaxabsvz, bool process_units)=0;
     66                virtual void   ReinitializeInput(int reinitialized_enum,int original_enum)=0;
     67
    5768
    5869                /*Implementation: */
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r4042 r4043  
    632632/*}}}*/
    633633/*FUNCTION Penta::UpdateInputsFromSolution {{{1*/
    634 void  Penta::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
     634void  Penta::UpdateInputsFromSolution(double* solution){
     635
     636        int analysis_type,sub_analysis_type;
     637
     638        /*retrive parameters: */
     639        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     640        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    635641
    636642        /*Just branch to the correct UpdateInputsFromSolution generator, according to the type of analysis we are carrying out: */
    637643        if (analysis_type==ControlAnalysisEnum){
    638644               
    639                 UpdateInputsFromSolutionDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
     645                UpdateInputsFromSolutionDiagnosticHoriz( solution);
    640646        }
    641647        else if (analysis_type==DiagnosticAnalysisEnum){
    … …  
    643649                if (sub_analysis_type==HorizAnalysisEnum){
    644650
    645                         UpdateInputsFromSolutionDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
     651                        UpdateInputsFromSolutionDiagnosticHoriz( solution);
    646652                }
    647653                else if (sub_analysis_type==StokesAnalysisEnum){
    648654
    649                         UpdateInputsFromSolutionDiagnosticStokes( solution,analysis_type,sub_analysis_type);
     655                        UpdateInputsFromSolutionDiagnosticStokes( solution);
    650656                }
    651657                else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
    … …  
    654660        else if (analysis_type==SlopeComputeAnalysisEnum){
    655661
    656                 UpdateInputsFromSolutionSlopeCompute( solution,analysis_type,sub_analysis_type);
     662                UpdateInputsFromSolutionSlopeCompute( solution);
    657663        }
    658664        else if (analysis_type==PrognosticAnalysisEnum){
    659665
    660                 UpdateInputsFromSolutionPrognostic( solution,analysis_type,sub_analysis_type);
     666                UpdateInputsFromSolutionPrognostic( solution);
    661667        }
    662668        else if (analysis_type==Prognostic2AnalysisEnum){
    663669
    664                 UpdateInputsFromSolutionPrognostic2(solution,analysis_type,sub_analysis_type);
     670                UpdateInputsFromSolutionPrognostic2(solution);
    665671        }
    666672        else if (analysis_type==BalancedthicknessAnalysisEnum){
    667673
    668                 UpdateInputsFromSolutionBalancedthickness( solution,analysis_type,sub_analysis_type);
     674                UpdateInputsFromSolutionBalancedthickness( solution);
    669675        }
    670676        else if (analysis_type==Balancedthickness2AnalysisEnum){
    671677
    672                 UpdateInputsFromSolutionBalancedthickness2( solution,analysis_type,sub_analysis_type);
     678                UpdateInputsFromSolutionBalancedthickness2( solution);
    673679        }
    674680        else if (analysis_type==BalancedvelocitiesAnalysisEnum){
    675681
    676                 UpdateInputsFromSolutionBalancedvelocities( solution,analysis_type,sub_analysis_type);
     682                UpdateInputsFromSolutionBalancedvelocities( solution);
    677683        }
    678684        else{
    … …  
    683689/*Object functions*/
    684690/*FUNCTION Penta::UpdateInputsFromSolutionDiagnosticHoriz {{{1*/
    685 void  Penta::UpdateInputsFromSolutionDiagnosticHoriz(double* solution, int analysis_type, int sub_analysis_type){
     691void  Penta::UpdateInputsFromSolutionDiagnosticHoriz(double* solution){
    686692       
    687693       
    … …  
    744750/*}}}*/
    745751/*FUNCTION Penta::UpdateInputsFromSolutionDiagnosticStokes {{{1*/
    746 void  Penta::UpdateInputsFromSolutionDiagnosticStokes(double* solution, int analysis_type, int sub_analysis_type){
     752void  Penta::UpdateInputsFromSolutionDiagnosticStokes(double* solution){
    747753       
    748754       
    … …  
    801807/*}}}*/
    802808/*FUNCTION Penta::UpdateInputsFromSolutionSlopeCompute {{{1*/
    803 void  Penta::UpdateInputsFromSolutionSlopeCompute(double* solution, int analysis_type, int sub_analysis_type){
     809void  Penta::UpdateInputsFromSolutionSlopeCompute(double* solution){
    804810        ISSMERROR(" not supported yet!");
    805811}
    806812/*}}}*/
    807813/*FUNCTION Penta::UpdateInputsFromSolutionPrognostic {{{1*/
    808 void  Penta::UpdateInputsFromSolutionPrognostic(double* solution, int analysis_type, int sub_analysis_type){
     814void  Penta::UpdateInputsFromSolutionPrognostic(double* solution){
    809815        ISSMERROR(" not supported yet!");
    810816}
    811817/*}}}*/
    812818/*FUNCTION Penta::UpdateInputsFromSolutionPrognostic2 {{{1*/
    813 void  Penta::UpdateInputsFromSolutionPrognostic2(double* solution, int analysis_type, int sub_analysis_type){
     819void  Penta::UpdateInputsFromSolutionPrognostic2(double* solution){
    814820        ISSMERROR(" not supported yet!");
    815821}
    816822/*}}}*/
    817823/*FUNCTION Penta::UpdateInputsFromSolutionBalancedthickness {{{1*/
    818 void  Penta::UpdateInputsFromSolutionBalancedthickness(double* solution, int analysis_type, int sub_analysis_type){
     824void  Penta::UpdateInputsFromSolutionBalancedthickness(double* solution){
    819825        ISSMERROR(" not supported yet!");
    820826}
    821827/*}}}*/
    822828/*FUNCTION Penta::UpdateInputsFromSolutionBalancedthickness2 {{{1*/
    823 void  Penta::UpdateInputsFromSolutionBalancedthickness2(double* solution, int analysis_type, int sub_analysis_type){
     829void  Penta::UpdateInputsFromSolutionBalancedthickness2(double* solution){
    824830        ISSMERROR(" not supported yet!");
    825831}
    826832/*}}}*/
    827833/*FUNCTION Penta::UpdateInputsFromSolutionBalancedvelocities {{{1*/
    828 void  Penta::UpdateInputsFromSolutionBalancedvelocities(double* solution, int analysis_type, int sub_analysis_type){
     834void  Penta::UpdateInputsFromSolutionBalancedvelocities(double* solution){
    829835        ISSMERROR(" not supported yet!");
    830836}
    831837/*}}}*/
    832 /*FUNCTION Penta::GetSolutionFromInputs(Vec solution,int analysis_type,int sub_analysis_type){{{1*/
    833 void  Penta::GetSolutionFromInputs(Vec solution,int analysis_type,int sub_analysis_type){
     838/*FUNCTION Penta::GetSolutionFromInputs(Vec solution){{{1*/
     839void  Penta::GetSolutionFromInputs(Vec solution){
     840
     841        int analysis_type,sub_analysis_type;
     842
     843        /*retrive parameters: */
     844        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     845        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
     846
     847
    834848        /*Just branch to the correct UpdateInputsFromSolution generator, according to the type of analysis we are carrying out: */
    835849        if (analysis_type==DiagnosticAnalysisEnum){
    836850                if (sub_analysis_type==HorizAnalysisEnum){
    837                         GetSolutionFromInputsDiagnosticHoriz(solution,analysis_type,sub_analysis_type);
     851                        GetSolutionFromInputsDiagnosticHoriz(solution);
    838852                }
    839853                else if(sub_analysis_type==VertAnalysisEnum){
    840                         GetSolutionFromInputsDiagnosticVert(solution,analysis_type,sub_analysis_type);
     854                        GetSolutionFromInputsDiagnosticVert(solution);
    841855                }
    842856                else if(sub_analysis_type==StokesAnalysisEnum){
    843                         GetSolutionFromInputsDiagnosticStokes(solution,analysis_type,sub_analysis_type);
     857                        GetSolutionFromInputsDiagnosticStokes(solution);
    844858                }
    845859                else ISSMERROR("sub_analysis: %i (%s) not supported yet",sub_analysis_type,EnumAsString(sub_analysis_type));
    … …  
    850864}
    851865/*}}}*/
    852 /*FUNCTION Penta::GetSolutionFromInputsDiagnosticHoriz(Vec solution,int analysis_type,int sub_analysis_type){{{1*/
    853 void  Penta::GetSolutionFromInputsDiagnosticHoriz(Vec solution,int analysis_type,int sub_analysis_type){
     866/*FUNCTION Penta::GetSolutionFromInputsDiagnosticHoriz(Vec solution){{{1*/
     867void  Penta::GetSolutionFromInputsDiagnosticHoriz(Vec solution){
    854868
    855869        int i;
    … …  
    886900}
    887901/*}}}*/
    888 /*FUNCTION Penta::GetSolutionFromInputsDiagnosticVert(Vec solution,int analysis_type,int sub_analysis_type){{{1*/
    889 void  Penta::GetSolutionFromInputsDiagnosticVert(Vec solution,int analysis_type,int sub_analysis_type){
     902/*FUNCTION Penta::GetSolutionFromInputsDiagnosticVert(Vec solution){{{1*/
     903void  Penta::GetSolutionFromInputsDiagnosticVert(Vec solution){
    890904
    891905        int i;
    … …  
    918932}
    919933/*}}}*/
    920 /*FUNCTION Penta::GetSolutionFromInputsDiagnosticStokes(Vec solution,int analysis_type,int sub_analysis_type){{{1*/
    921 void  Penta::GetSolutionFromInputsDiagnosticStokes(Vec solution,int analysis_type,int sub_analysis_type){
     934/*FUNCTION Penta::GetSolutionFromInputsDiagnosticStokes(Vec solution){{{1*/
     935void  Penta::GetSolutionFromInputsDiagnosticStokes(Vec solution){
    922936
    923937        int i;
    … …  
    10011015/*}}}*/
    10021016/*FUNCTION Penta::ComputeBasalStress {{{1*/
    1003 void  Penta::ComputeBasalStress(Vec sigma_b,int analysis_type,int sub_analysis_type){
     1017void  Penta::ComputeBasalStress(Vec sigma_b){
    10041018
    10051019        int i,j;
    … …  
    10191033        double stresstensor[6]={0.0};
    10201034        double viscosity;
     1035        int analysis_type,sub_analysis_type;
    10211036
    10221037        int  dofv[3]={0,1,2};
    … …  
    10471062        double stokesreconditioning;
    10481063
     1064
     1065        /*retrive parameters: */
     1066        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     1067        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
     1068
    10491069        /*Check analysis_types*/
    10501070        if (analysis_type!=DiagnosticAnalysisEnum || sub_analysis_type!=StokesAnalysisEnum) ISSMERROR("Not supported yet!");
    … …  
    11231143/*}}}*/
    11241144/*FUNCTION Penta::ComputePressure {{{1*/
    1125 void  Penta::ComputePressure(Vec pg,int analysis_type,int sub_analysis_type){
     1145void  Penta::ComputePressure(Vec pg){
    11261146
    11271147        int i;
    … …  
    11681188/*}}}*/
    11691189/*FUNCTION Penta::ComputeStrainRate {{{1*/
    1170 void  Penta::ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type){
     1190void  Penta::ComputeStrainRate(Vec eps){
    11711191
    11721192        ISSMERROR("Not implemented yet");
    … …  
    11751195/*}}}*/
    11761196/*FUNCTION Penta::CostFunction {{{1*/
    1177 double Penta::CostFunction(int analysis_type,int sub_analysis_type){
     1197double Penta::CostFunction(void){
    11781198
    11791199        double J;
    … …  
    12061226                 * and compute CostFunction*/
    12071227                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face).
    1208                 J=tria->CostFunction(analysis_type,sub_analysis_type);
     1228                J=tria->CostFunction();
    12091229                delete tria;
    12101230                return J;
    … …  
    12131233
    12141234                tria=(Tria*)SpawnTria(3,4,5); //grids 3, 4 and 5 make the new tria (upper face).
    1215                 J=tria->CostFunction(analysis_type,sub_analysis_type);
     1235                J=tria->CostFunction();
    12161236                delete tria;
    12171237                return J;
    … …  
    12201240/*}}}*/
    12211241/*FUNCTION Penta::CreateKMatrix {{{1*/
    1222 void  Penta::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){
     1242void  Penta::CreateKMatrix(Mat Kgg){
     1243
     1244        int analysis_type,sub_analysis_type;
     1245
     1246        /*retrive parameters: */
     1247        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     1248        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    12231249
    12241250        /*if debugging mode, check that all pointers exist*/
    … …  
    12271253        /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
    12281254        if (analysis_type==ControlAnalysisEnum){
    1229                 CreateKMatrixDiagnosticHoriz( Kgg,analysis_type,sub_analysis_type);
     1255                CreateKMatrixDiagnosticHoriz( Kgg);
    12301256        }
    12311257        else if (analysis_type==DiagnosticAnalysisEnum){
    12321258                if (sub_analysis_type==HorizAnalysisEnum){
    1233                         CreateKMatrixDiagnosticHoriz( Kgg,analysis_type,sub_analysis_type);
     1259                        CreateKMatrixDiagnosticHoriz( Kgg);
    12341260                }
    12351261                else if (sub_analysis_type==HutterAnalysisEnum){
    1236                         CreateKMatrixDiagnosticHutter( Kgg,analysis_type,sub_analysis_type);
     1262                        CreateKMatrixDiagnosticHutter( Kgg);
    12371263                }
    12381264                else if (sub_analysis_type==VertAnalysisEnum){
    1239                         CreateKMatrixDiagnosticVert( Kgg,analysis_type,sub_analysis_type);
     1265                        CreateKMatrixDiagnosticVert( Kgg);
    12401266                }
    12411267                else if (sub_analysis_type==StokesAnalysisEnum){
    1242                         CreateKMatrixDiagnosticStokes( Kgg,analysis_type,sub_analysis_type);
     1268                        CreateKMatrixDiagnosticStokes( Kgg);
    12431269                }
    12441270                else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
    12451271        }
    12461272        else if (analysis_type==SlopeComputeAnalysisEnum){
    1247                 CreateKMatrixSlopeCompute( Kgg,analysis_type,sub_analysis_type);
     1273                CreateKMatrixSlopeCompute( Kgg);
    12481274        }
    12491275        else if (analysis_type==PrognosticAnalysisEnum){
    1250                 CreateKMatrixPrognostic( Kgg,analysis_type,sub_analysis_type);
     1276                CreateKMatrixPrognostic( Kgg);
    12511277        }
    12521278        else if (analysis_type==BalancedthicknessAnalysisEnum){
    1253                 CreateKMatrixBalancedthickness( Kgg,analysis_type,sub_analysis_type);
     1279                CreateKMatrixBalancedthickness( Kgg);
    12541280        }
    12551281        else if (analysis_type==BalancedvelocitiesAnalysisEnum){
    1256                 CreateKMatrixBalancedvelocities( Kgg,analysis_type,sub_analysis_type);
     1282                CreateKMatrixBalancedvelocities( Kgg);
    12571283        }
    12581284        else if (analysis_type==ThermalAnalysisEnum){
    1259                 CreateKMatrixThermal( Kgg,analysis_type,sub_analysis_type);
     1285                CreateKMatrixThermal( Kgg);
    12601286        }
    12611287        else if (analysis_type==MeltingAnalysisEnum){
    1262                 CreateKMatrixMelting( Kgg,analysis_type,sub_analysis_type);
     1288                CreateKMatrixMelting( Kgg);
    12631289        }
    12641290        else ISSMERROR("%s%i%s\n","analysis: ",analysis_type," not supported yet");
    … …  
    12681294/*FUNCTION Penta::CreateKMatrixBalancedthickness {{{1*/
    12691295
    1270 void  Penta::CreateKMatrixBalancedthickness(Mat Kgg,int analysis_type,int sub_analysis_type){
     1296void  Penta::CreateKMatrixBalancedthickness(Mat Kgg){
    12711297
    12721298        /*Collapsed formulation: */
    … …  
    12891315        /*Spawn Tria element from the base of the Penta: */
    12901316        tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    1291         tria->CreateKMatrix(Kgg, analysis_type,sub_analysis_type);
     1317        tria->CreateKMatrix(Kgg);
    12921318        delete tria;
    12931319        return;
    … …  
    12971323/*FUNCTION Penta::CreateKMatrixBalancedvelocities {{{1*/
    12981324
    1299 void  Penta::CreateKMatrixBalancedvelocities(Mat Kgg,int analysis_type,int sub_analysis_type){
     1325void  Penta::CreateKMatrixBalancedvelocities(Mat Kgg){
    13001326
    13011327        /*Collapsed formulation: */
    … …  
    13181344        /*Spawn Tria element from the base of the Penta: */
    13191345        tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    1320         tria->CreateKMatrix(Kgg,analysis_type,sub_analysis_type);
     1346        tria->CreateKMatrix(Kgg);
    13211347        delete tria;
    13221348        return;
    … …  
    13251351/*}}}*/
    13261352/*FUNCTION Penta::CreateKMatrixDiagnosticHoriz {{{1*/
    1327 void Penta::CreateKMatrixDiagnosticHoriz( Mat Kgg,  int analysis_type,int sub_analysis_type){
     1353void Penta::CreateKMatrixDiagnosticHoriz( Mat Kgg){
    13281354
    13291355        /* local declarations */
    … …  
    14371463                 *and use its CreateKMatrix functionality to fill the global stiffness matrix: */
    14381464                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    1439                 tria->CreateKMatrix(Kgg, analysis_type,sub_analysis_type);
     1465                tria->CreateKMatrix(Kgg);
    14401466                delete tria;
    14411467                return;
    … …  
    15281554
    15291555                        tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    1530                         tria->CreateKMatrixDiagnosticHorizFriction(Kgg,analysis_type,sub_analysis_type);
     1556                        tria->CreateKMatrixDiagnosticHorizFriction(Kgg);
    15311557                        delete tria;
    15321558                }
    … …  
    15481574/*}}}*/
    15491575/*FUNCTION Penta::CreateKMatrixDiagnosticHutter{{{1*/
    1550 void  Penta::CreateKMatrixDiagnosticHutter(Mat Kgg,int analysis_type,int sub_analysis_type){
     1576void  Penta::CreateKMatrixDiagnosticHutter(Mat Kgg){
    15511577
    15521578        /*Collapsed formulation: */
    … …  
    15661592        for(i=0;i<3;i++){
    15671593                beam=(Beam*)SpawnBeam(i,i+3); //[0 3], [1 4] and [2 5] are the four vertical edges of the Penta
    1568                 beam->CreateKMatrix(Kgg,analysis_type,sub_analysis_type);
     1594                beam->CreateKMatrix(Kgg);
    15691595        }
    15701596
    … …  
    15751601/*}}}*/
    15761602/*FUNCTION Penta::CreateKMatrixDiagnosticStokes {{{1*/
    1577 void Penta::CreateKMatrixDiagnosticStokes( Mat Kgg,  int analysis_type,int sub_analysis_type){
     1603void Penta::CreateKMatrixDiagnosticStokes( Mat Kgg){
    15781604
    15791605        int i,j;
    … …  
    16491675        /*parameters: */
    16501676        double stokesreconditioning;
     1677        int analysis_type;
    16511678
    16521679        /*inputs: */
    … …  
    16541681        bool onbed;
    16551682        bool shelf;
     1683
     1684        /*retrive parameters: */
     1685        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
    16561686
    16571687        /*retrieve inputs :*/
    … …  
    18401870/*}}}*/
    18411871/*FUNCTION Penta::CreateKMatrixDiagnosticVert {{{1*/
    1842 void Penta::CreateKMatrixDiagnosticVert( Mat Kgg,  int analysis_type,int sub_analysis_type){
     1872void Penta::CreateKMatrixDiagnosticVert( Mat Kgg){
    18431873
    18441874        /* local declarations */
    … …  
    18951925        if(onsurface){
    18961926                tria=(Tria*)SpawnTria(3,4,5); //nodes 3,4 and 5 are on the surface
    1897                 tria->CreateKMatrixDiagnosticSurfaceVert(Kgg, analysis_type,sub_analysis_type);
     1927                tria->CreateKMatrixDiagnosticSurfaceVert(Kgg);
    18981928                delete tria;
    18991929        }
    … …  
    19651995/*}}}*/
    19661996/*FUNCTION Penta::CreateKMatrixMelting {{{1*/
    1967 void  Penta::CreateKMatrixMelting(Mat Kgg,int analysis_type,int sub_analysis_type){
     1997void  Penta::CreateKMatrixMelting(Mat Kgg){
    19681998
    19691999        Tria* tria=NULL;
    … …  
    19862016
    19872017                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    1988                 tria->CreateKMatrixMelting(Kgg, analysis_type,sub_analysis_type);
     2018                tria->CreateKMatrixMelting(Kgg);
    19892019                delete tria;
    19902020                return;
    … …  
    19942024/*FUNCTION Penta::CreateKMatrixPrognostic {{{1*/
    19952025
    1996 void  Penta::CreateKMatrixPrognostic(Mat Kgg,int analysis_type,int sub_analysis_type){
     2026void  Penta::CreateKMatrixPrognostic(Mat Kgg){
    19972027
    19982028        /*Collapsed formulation: */
    … …  
    20152045        /*Spawn Tria element from the base of the Penta: */
    20162046        tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    2017         tria->CreateKMatrix(Kgg, analysis_type,sub_analysis_type);
     2047        tria->CreateKMatrix(Kgg);
    20182048        delete tria;
    20192049        return;
    … …  
    20232053/*FUNCTION Penta::CreateKMatrixSlopeCompute {{{1*/
    20242054
    2025 void  Penta::CreateKMatrixSlopeCompute(Mat Kgg,int analysis_type,int sub_analysis_type){
     2055void  Penta::CreateKMatrixSlopeCompute(Mat Kgg){
    20262056
    20272057        /*Collapsed formulation: */
    … …  
    20452075        /*Spawn Tria element from the base of the Penta: */
    20462076        tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    2047         tria->CreateKMatrix(Kgg, analysis_type,sub_analysis_type);
     2077        tria->CreateKMatrix(Kgg);
    20482078        delete tria;
    20492079        return;
    … …  
    20522082/*}}}*/
    20532083/*FUNCTION Penta::CreateKMatrixThermal {{{1*/
    2054 void  Penta::CreateKMatrixThermal(Mat Kgg,int analysis_type,int sub_analysis_type){
     2084void  Penta::CreateKMatrixThermal(Mat Kgg){
    20552085
    20562086        /* local declarations */
    … …  
    22912321
    22922322                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    2293                 tria->CreateKMatrixThermal(Kgg, analysis_type,sub_analysis_type);
     2323                tria->CreateKMatrixThermal(Kgg);
    22942324                delete tria;
    22952325        }
    … …  
    22972327/*}}}*/
    22982328/*FUNCTION Penta::CreatePVector {{{1*/
    2299 void  Penta::CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type){
     2329void  Penta::CreatePVector(Vec pg){
     2330
     2331        int analysis_type,sub_analysis_type;
     2332
     2333        /*retrive parameters: */
     2334        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     2335        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    23002336
    23012337        /*if debugging mode, check that all pointers exist*/
    … …  
    23042340        /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
    23052341        if (analysis_type==ControlAnalysisEnum){
    2306                 CreatePVectorDiagnosticHoriz( pg,analysis_type,sub_analysis_type);
     2342                CreatePVectorDiagnosticHoriz( pg);
    23072343        }
    23082344        else if (analysis_type==DiagnosticAnalysisEnum){
    23092345                if (sub_analysis_type==HorizAnalysisEnum){
    2310                         CreatePVectorDiagnosticHoriz( pg,analysis_type,sub_analysis_type);
     2346                        CreatePVectorDiagnosticHoriz( pg);
    23112347                }
    23122348                else if (sub_analysis_type==HutterAnalysisEnum){
    2313                         CreatePVectorDiagnosticHutter( pg,analysis_type,sub_analysis_type);
     2349                        CreatePVectorDiagnosticHutter( pg);
    23142350                }
    23152351                else if (sub_analysis_type==VertAnalysisEnum){
    2316                         CreatePVectorDiagnosticVert( pg,analysis_type,sub_analysis_type);
     2352                        CreatePVectorDiagnosticVert( pg);
    23172353                }
    23182354                else if (sub_analysis_type==StokesAnalysisEnum){
    2319                         CreatePVectorDiagnosticStokes( pg,analysis_type,sub_analysis_type);
     2355                        CreatePVectorDiagnosticStokes( pg);
    23202356                }
    23212357                else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
    23222358        }
    23232359        else if (analysis_type==SlopeComputeAnalysisEnum){
    2324                 CreatePVectorSlopeCompute( pg,analysis_type,sub_analysis_type);
     2360                CreatePVectorSlopeCompute( pg);
    23252361        }
    23262362        else if (analysis_type==PrognosticAnalysisEnum){
    2327                 CreatePVectorPrognostic( pg,analysis_type,sub_analysis_type);
     2363                CreatePVectorPrognostic( pg);
    23282364        }
    23292365        else if (analysis_type==BalancedthicknessAnalysisEnum){
    2330                 CreatePVectorBalancedthickness( pg,analysis_type,sub_analysis_type);
     2366                CreatePVectorBalancedthickness( pg);
    23312367        }
    23322368        else if (analysis_type==BalancedvelocitiesAnalysisEnum){
    2333                 CreatePVectorBalancedvelocities( pg,analysis_type,sub_analysis_type);
     2369                CreatePVectorBalancedvelocities( pg);
    23342370        }
    23352371        else if (analysis_type==ThermalAnalysisEnum){
    2336                 CreatePVectorThermal( pg,analysis_type,sub_analysis_type);
     2372                CreatePVectorThermal( pg);
    23372373        }
    23382374        else if (analysis_type==MeltingAnalysisEnum){
    2339                 CreatePVectorMelting( pg,analysis_type,sub_analysis_type);
     2375                CreatePVectorMelting( pg);
    23402376        }
    23412377        else ISSMERROR("%s%i%s\n","analysis: ",analysis_type," not supported yet");
    … …  
    23442380/*}}}*/
    23452381/*FUNCTION Penta::CreatePVectorBalancedthickness {{{1*/
    2346 void Penta::CreatePVectorBalancedthickness( Vec pg, int analysis_type,int sub_analysis_type){
     2382void Penta::CreatePVectorBalancedthickness( Vec pg){
    23472383
    23482384        /*Collapsed formulation: */
    … …  
    23652401        /*Spawn Tria element from the base of the Penta: */
    23662402        tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    2367         tria->CreatePVector(pg, analysis_type,sub_analysis_type);
     2403        tria->CreatePVector(pg);
    23682404        delete tria;
    23692405        return;
    … …  
    23712407/*}}}*/
    23722408/*FUNCTION Penta::CreatePVectorBalancedvelocities {{{1*/
    2373 void Penta::CreatePVectorBalancedvelocities( Vec pg, int analysis_type,int sub_analysis_type){
     2409void Penta::CreatePVectorBalancedvelocities( Vec pg){
    23742410
    23752411        /*Collapsed formulation: */
    … …  
    23922428        /*Spawn Tria element from the base of the Penta: */
    23932429        tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    2394         tria->CreatePVector(pg, analysis_type,sub_analysis_type);
     2430        tria->CreatePVector(pg);
    23952431        delete tria;
    23962432        return;
    … …  
    23982434/*}}}*/
    23992435/*FUNCTION Penta::CreatePVectorDiagnosticHoriz {{{1*/
    2400 void Penta::CreatePVectorDiagnosticHoriz( Vec pg, int analysis_type,int sub_analysis_type){
     2436void Penta::CreatePVectorDiagnosticHoriz( Vec pg){
    24012437
    24022438        int i,j;
    … …  
    24712507                 *and use its CreatePVector functionality to return an elementary load vector: */
    24722508                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    2473                 tria->CreatePVector(pg, analysis_type,sub_analysis_type);
     2509                tria->CreatePVector(pg);
    24742510                delete tria;
    24752511                return;
    … …  
    25462582/*}}}*/
    25472583/*FUNCTION Penta::CreatePVectorDiagnosticHutter{{{1*/
    2548 void  Penta::CreatePVectorDiagnosticHutter(Vec pg,int analysis_type,int sub_analysis_type){
     2584void  Penta::CreatePVectorDiagnosticHutter(Vec pg){
    25492585
    25502586        /*Collapsed formulation: */
    … …  
    25642600        for(i=0;i<3;i++){
    25652601                beam=(Beam*)SpawnBeam(i,i+3); //[0 3], [1 4] and [2 5] are the four vertical edges of the Penta
    2566                 beam->CreatePVector(pg,analysis_type,sub_analysis_type);
     2602                beam->CreatePVector(pg);
    25672603        }
    25682604
    … …  
    25732609/*}}}*/
    25742610/*FUNCTION Penta::CreatePVectorDiagnosticStokes {{{1*/
    2575 void Penta::CreatePVectorDiagnosticStokes( Vec pg, int analysis_type,int sub_analysis_type){
     2611void Penta::CreatePVectorDiagnosticStokes( Vec pg){
    25762612
    25772613        /*indexing: */
    … …  
    28142850/*}}}*/
    28152851/*FUNCTION Penta::CreatePVectorDiagnosticVert {{{1*/
    2816 void  Penta::CreatePVectorDiagnosticVert( Vec pg, int analysis_type,int sub_analysis_type){
     2852void  Penta::CreatePVectorDiagnosticVert( Vec pg){
    28172853
    28182854        int i;
    … …  
    28752911        if(onbed){
    28762912                tria=(Tria*)SpawnTria(0,1,2); //nodes 0, 1 and 2 are on the bedrock
    2877                 tria->CreatePVectorDiagnosticBaseVert(pg, analysis_type,sub_analysis_type);
     2913                tria->CreatePVectorDiagnosticBaseVert(pg);
    28782914                delete tria;
    28792915        }
    … …  
    29402976/*}}}*/
    29412977/*FUNCTION Penta::CreatePVectorMelting {{{1*/
    2942 void Penta::CreatePVectorMelting( Vec pg, int analysis_type,int sub_analysis_type){
     2978void Penta::CreatePVectorMelting( Vec pg){
    29432979        return;
    29442980}
    … …  
    29462982/*FUNCTION Penta::CreatePVectorPrognostic {{{1*/
    29472983
    2948 void Penta::CreatePVectorPrognostic( Vec pg,  int analysis_type,int sub_analysis_type){
     2984void Penta::CreatePVectorPrognostic( Vec pg){
    29492985
    29502986        /*Collapsed formulation: */
    … …  
    29673003        /*Spawn Tria element from the base of the Penta: */
    29683004        tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    2969         tria->CreatePVector(pg, analysis_type,sub_analysis_type);
     3005        tria->CreatePVector(pg);
    29703006        delete tria;
    29713007        return;
    … …  
    29743010/*FUNCTION Penta::CreatePVectorSlopeCompute {{{1*/
    29753011
    2976 void Penta::CreatePVectorSlopeCompute( Vec pg,  int analysis_type,int sub_analysis_type){
     3012void Penta::CreatePVectorSlopeCompute( Vec pg){
    29773013
    29783014        /*Collapsed formulation: */
    … …  
    29953031        /*Spawn Tria element from the base of the Penta: */
    29963032        tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    2997         tria->CreatePVector(pg, analysis_type,sub_analysis_type);
     3033        tria->CreatePVector(pg);
    29983034        delete tria;
    29993035        return;
    … …  
    30013037/*}}}*/
    30023038/*FUNCTION Penta::CreatePVectorThermal {{{1*/
    3003 void Penta::CreatePVectorThermal( Vec pg, int analysis_type,int sub_analysis_type){
     3039void Penta::CreatePVectorThermal( Vec pg){
    30043040
    30053041        /*indexing: */
    … …  
    31603196
    31613197                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    3162                 tria->CreatePVectorThermalShelf(pg, analysis_type,sub_analysis_type);
     3198                tria->CreatePVectorThermalShelf(pg);
    31633199                delete tria;
    31643200        }
    … …  
    31683204
    31693205                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    3170                 tria->CreatePVectorThermalSheet(pg, analysis_type,sub_analysis_type);
     3206                tria->CreatePVectorThermalSheet(pg);
    31713207                delete tria;
    31723208        }
    … …  
    31833219/*}}}*/
    31843220/*FUNCTION Penta::Du {{{1*/
    3185 void  Penta::Du(Vec du_g,int analysis_type,int sub_analysis_type){
     3221void  Penta::Du(Vec du_g){
    31863222
    31873223        int i;
    … …  
    32143250                 * and compute Du*/
    32153251                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face).
    3216                 tria->Du(du_g,analysis_type,sub_analysis_type);
     3252                tria->Du(du_g);
    32173253                delete tria;
    32183254                return;
    … …  
    32213257
    32223258                tria=(Tria*)SpawnTria(3,4,5); //grids 3, 4 and 5 make the new tria (upper face).
    3223                 tria->Du(du_g,analysis_type,sub_analysis_type);
     3259                tria->Du(du_g);
    32243260                delete tria;
    32253261                return;
    … …  
    45194555/*}}}*/
    45204556/*FUNCTION Penta::Gradj {{{1*/
    4521 void  Penta::Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type){
     4557void  Penta::Gradj(Vec grad_g,int control_type){
    45224558
    45234559        /*inputs: */
    … …  
    45314567
    45324568        if (control_type==DragCoefficientEnum){
    4533                 GradjDrag( grad_g,analysis_type,sub_analysis_type);
     4569                GradjDrag( grad_g);
    45344570        }
    45354571        else if (control_type=RheologyBEnum){
    4536                 GradjB( grad_g, analysis_type,sub_analysis_type);
     4572                GradjB( grad_g);
    45374573        }
    45384574        else ISSMERROR("%s%i","control type not supported yet: ",control_type);
    … …  
    45404576/*}}}*/
    45414577/*FUNCTION Penta::GradjDrag {{{1*/
    4542 void  Penta::GradjDrag(Vec grad_g,int analysis_type,int sub_analysis_type){
     4578void  Penta::GradjDrag(Vec grad_g){
    45434579
    45444580        Tria* tria=NULL;
    … …  
    45484584        bool onbed;
    45494585        bool shelf;
     4586        int analysis_type,sub_analysis_type;
     4587
     4588        /*retrive parameters: */
     4589        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     4590        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    45504591
    45514592        /*retrieve inputs :*/
    … …  
    45674608                /*MacAyeal or Pattyn*/
    45684609                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    4569                 tria->GradjDrag( grad_g,analysis_type,sub_analysis_type);
     4610                tria->GradjDrag( grad_g);
    45704611                delete tria;
    45714612                return;
    … …  
    45754616                /*Stokes*/
    45764617                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
    4577                 tria->GradjDragStokes( grad_g,analysis_type,sub_analysis_type);
     4618                tria->GradjDragStokes( grad_g);
    45784619                delete tria;
    45794620                return;
    … …  
    45834624/*}}}*/
    45844625/*FUNCTION Penta::GradjB {{{1*/
    4585 void  Penta::GradjB(Vec grad_g,int analysis_type,int sub_analysis_type){
     4626void  Penta::GradjB(Vec grad_g){
    45864627
    45874628        Tria* tria=NULL;
    … …  
    46074648                 * and compute gardj*/
    46084649                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face).
    4609                 tria->GradjB(grad_g,analysis_type,sub_analysis_type);
     4650                tria->GradjB(grad_g);
    46104651                delete tria;
    46114652                return;
    … …  
    46144655                /*B is a 2d field, use MacAyeal(2d) gradient even if it is Stokes or Pattyn*/
    46154656                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face).
    4616                 tria->GradjB(grad_g,analysis_type,sub_analysis_type);
     4657                tria->GradjB(grad_g);
    46174658                delete tria;
    46184659                return;
    … …  
    46214662/*}}}*/
    46224663/*FUNCTION Penta::MassFlux {{{1*/
    4623 double Penta::MassFlux( double* segment,double* ug){
     4664double Penta::MassFlux( double* segment){
    46244665        ISSMERROR(" not supported yet!");
    46254666}
    46264667/*}}}*/
    46274668/*FUNCTION Penta::Misfit {{{1*/
    4628 double Penta::Misfit(int analysis_type,int sub_analysis_type){
     4669double Penta::Misfit(void){
    46294670
    46304671        double J;
    … …  
    46574698                 * and compute Misfit*/
    46584699                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face).
    4659                 J=tria->Misfit(analysis_type,sub_analysis_type);
     4700                J=tria->Misfit();
    46604701                delete tria;
    46614702                return J;
    … …  
    46644705
    46654706                tria=(Tria*)SpawnTria(3,4,5); //grids 3, 4 and 5 make the new tria (upper face).
    4666                 J=tria->Misfit(analysis_type,sub_analysis_type);
     4707                J=tria->Misfit();
    46674708                delete tria;
    46684709                return J;
    … …  
    47714812/*}}}1*/
    47724813/*FUNCTION Penta::SurfaceArea {{{1*/
    4773 double Penta::SurfaceArea(int analysis_type,int sub_analysis_type){
     4814double Penta::SurfaceArea(void){
    47744815
    47754816        double S;
    … …  
    48024843                 * and compute SurfaceArea*/
    48034844                tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face).
    4804                 S=tria->SurfaceArea(analysis_type,sub_analysis_type);
     4845                S=tria->SurfaceArea();
    48054846                delete tria;
    48064847                return S;
    … …  
    48094850
    48104851                tria=(Tria*)SpawnTria(3,4,5); //grids 3, 4 and 5 make the new tria (upper face).
    4811                 S=tria->SurfaceArea(analysis_type,sub_analysis_type);
     4852                S=tria->SurfaceArea();
    48124853                delete tria;
    48134854                return S;
    … …  
    49534994void  Penta::MinVel(double* pminvel, bool process_units){
    49544995
     4996        int i;
     4997        int dim;
    49554998        const int numgrids=6;
    49564999        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    … …  
    49715014        /*now, compute minimum of velocity :*/
    49725015        if(dim==2){
    4973                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
     5016                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
    49745017        }
    49755018        else{
    4976                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
     5019                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
    49775020        }
    49785021
    … …  
    49915034void  Penta::MaxVel(double* pmaxvel, bool process_units){
    49925035
     5036        int i;
     5037        int dim;
    49935038        const int numgrids=6;
    49945039        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
    … …  
    50095054        /*now, compute maximum of velocity :*/
    50105055        if(dim==2){
    5011                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
     5056                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
    50125057        }
    50135058        else{
    5014                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
     5059                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
    50155060        }
    50165061
    … …  
    50265071}
    50275072/*}}}*/
     5073/*FUNCTION Penta::MinVx(double* pminvx, bool process_units);{{{1*/
     5074void  Penta::MinVx(double* pminvx, bool process_units){
     5075
     5076        int i;
     5077        int dim;
     5078        const int numgrids=6;
     5079        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5080        double  vx_values[numgrids];
     5081        double  minvx;
     5082
     5083        /*retrieve dim parameter: */
     5084        parameters->FindParam(&dim,DimEnum);
     5085
     5086        /*retrive velocity values at nodes */
     5087        inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numgrids,VxEnum);
     5088
     5089        /*now, compute minimum:*/
     5090        minvx=vx_values[0];
     5091        for(i=1;i<numgrids;i++){
     5092                if (vx_values[i]<minvx)minvx=vx_values[i];
     5093        }
     5094
     5095        /*Assign output pointers:*/
     5096        *pminvx=minvx;
     5097
     5098}
     5099/*}}}*/
     5100/*FUNCTION Penta::MaxVx(double* pmaxvx, bool process_units);{{{1*/
     5101void  Penta::MaxVx(double* pmaxvx, bool process_units){
     5102
     5103        int i;
     5104        int dim;
     5105        const int numgrids=6;
     5106        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5107        double  vx_values[numgrids];
     5108        double  maxvx;
     5109
     5110        /*retrieve dim parameter: */
     5111        parameters->FindParam(&dim,DimEnum);
     5112
     5113        /*retrive velocity values at nodes */
     5114        inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numgrids,VxEnum);
     5115
     5116        /*now, compute maximum:*/
     5117        maxvx=vx_values[0];
     5118        for(i=1;i<numgrids;i++){
     5119                if (vx_values[i]>maxvx)maxvx=vx_values[i];
     5120        }
     5121
     5122        /*Assign output pointers:*/
     5123        *pmaxvx=maxvx;
     5124
     5125}
     5126/*}}}*/
     5127/*FUNCTION Penta::MaxAbsVx(double* pmaxabsvx, bool process_units);{{{1*/
     5128void  Penta::MaxAbsVx(double* pmaxabsvx, bool process_units){
     5129
     5130        int i;
     5131        int dim;
     5132        const int numgrids=6;
     5133        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5134        double  vx_values[numgrids];
     5135        double  maxabsvx;
     5136
     5137        /*retrieve dim parameter: */
     5138        parameters->FindParam(&dim,DimEnum);
     5139
     5140        /*retrive velocity values at nodes */
     5141        inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numgrids,VxEnum);
     5142
     5143        /*now, compute maximum:*/
     5144        maxabsvx=fabs(vx_values[0]);
     5145        for(i=1;i<numgrids;i++){
     5146                if (fabs(vx_values[i])>maxabsvx)maxabsvx=fabs(vx_values[i]);
     5147        }
     5148
     5149        /*Assign output pointers:*/
     5150        *pmaxabsvx=maxabsvx;
     5151}
     5152/*}}}*/
     5153/*FUNCTION Penta::MinVy(double* pminvy, bool process_units);{{{1*/
     5154void  Penta::MinVy(double* pminvy, bool process_units){
     5155
     5156        int i;
     5157        int dim;
     5158        const int numgrids=6;
     5159        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5160        double  vy_values[numgrids];
     5161        double  minvy;
     5162
     5163        /*retrieve dim parameter: */
     5164        parameters->FindParam(&dim,DimEnum);
     5165
     5166        /*retrive velocity values at nodes */
     5167        inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numgrids,VyEnum);
     5168
     5169        /*now, compute minimum:*/
     5170        minvy=vy_values[0];
     5171        for(i=1;i<numgrids;i++){
     5172                if (vy_values[i]<minvy)minvy=vy_values[i];
     5173        }
     5174
     5175        /*Assign output pointers:*/
     5176        *pminvy=minvy;
     5177
     5178}
     5179/*}}}*/
     5180/*FUNCTION Penta::MaxVy(double* pmaxvy, bool process_units);{{{1*/
     5181void  Penta::MaxVy(double* pmaxvy, bool process_units){
     5182
     5183        int i;
     5184        int dim;
     5185        const int numgrids=6;
     5186        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5187        double  vy_values[numgrids];
     5188        double  maxvy;
     5189
     5190        /*retrieve dim parameter: */
     5191        parameters->FindParam(&dim,DimEnum);
     5192
     5193        /*retrive velocity values at nodes */
     5194        inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numgrids,VyEnum);
     5195
     5196        /*now, compute maximum:*/
     5197        maxvy=vy_values[0];
     5198        for(i=1;i<numgrids;i++){
     5199                if (vy_values[i]>maxvy)maxvy=vy_values[i];
     5200        }
     5201
     5202        /*Assign output pointers:*/
     5203        *pmaxvy=maxvy;
     5204
     5205}
     5206/*}}}*/
     5207/*FUNCTION Penta::MaxAbsVy(double* pmaxabsvy, bool process_units);{{{1*/
     5208void  Penta::MaxAbsVy(double* pmaxabsvy, bool process_units){
     5209
     5210        int i;
     5211        int dim;
     5212        const int numgrids=6;
     5213        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5214        double  vy_values[numgrids];
     5215        double  maxabsvy;
     5216
     5217        /*retrieve dim parameter: */
     5218        parameters->FindParam(&dim,DimEnum);
     5219
     5220        /*retrive velocity values at nodes */
     5221        inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numgrids,VyEnum);
     5222
     5223        /*now, compute maximum:*/
     5224        maxabsvy=fabs(vy_values[0]);
     5225        for(i=1;i<numgrids;i++){
     5226                if (fabs(vy_values[i])>maxabsvy)maxabsvy=fabs(vy_values[i]);
     5227        }
     5228
     5229        /*Assign output pointers:*/
     5230        *pmaxabsvy=maxabsvy;
     5231}
     5232/*}}}*/
     5233/*FUNCTION Penta::MinVz(double* pminvz, bool process_units);{{{1*/
     5234void  Penta::MinVz(double* pminvz, bool process_units){
     5235
     5236        int i;
     5237        int dim;
     5238        const int numgrids=6;
     5239        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5240        double  vz_values[numgrids];
     5241        double  minvz;
     5242
     5243        /*retrieve dim parameter: */
     5244        parameters->FindParam(&dim,DimEnum);
     5245
     5246        /*retrive velocity values at nodes */
     5247        inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numgrids,VzEnum);
     5248
     5249        /*now, compute minimum:*/
     5250        minvz=vz_values[0];
     5251        for(i=1;i<numgrids;i++){
     5252                if (vz_values[i]<minvz)minvz=vz_values[i];
     5253        }
     5254
     5255        /*Assign output pointers:*/
     5256        *pminvz=minvz;
     5257
     5258}
     5259/*}}}*/
     5260/*FUNCTION Penta::MaxVz(double* pmaxvz, bool process_units);{{{1*/
     5261void  Penta::MaxVz(double* pmaxvz, bool process_units){
     5262
     5263        int i;
     5264        int dim;
     5265        const int numgrids=6;
     5266        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5267        double  vz_values[numgrids];
     5268        double  maxvz;
     5269
     5270        /*retrieve dim parameter: */
     5271        parameters->FindParam(&dim,DimEnum);
     5272
     5273        /*retrive velocity values at nodes */
     5274        inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numgrids,VzEnum);
     5275
     5276        /*now, compute maximum:*/
     5277        maxvz=vz_values[0];
     5278        for(i=1;i<numgrids;i++){
     5279                if (vz_values[i]>maxvz)maxvz=vz_values[i];
     5280        }
     5281
     5282        /*Assign output pointers:*/
     5283        *pmaxvz=maxvz;
     5284
     5285}
     5286/*}}}*/
     5287/*FUNCTION Penta::MaxAbsVz(double* pmaxabsvz, bool process_units);{{{1*/
     5288void  Penta::MaxAbsVz(double* pmaxabsvz, bool process_units){
     5289
     5290        int i;
     5291        int dim;
     5292        const int numgrids=6;
     5293        double  gaussgrids[numgrids][4]={{1,0,0,-1},{0,1,0,-1},{0,0,1,-1},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
     5294        double  vz_values[numgrids];
     5295        double  maxabsvz;
     5296
     5297        /*retrieve dim parameter: */
     5298        parameters->FindParam(&dim,DimEnum);
     5299
     5300        /*retrive velocity values at nodes */
     5301        inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numgrids,VzEnum);
     5302
     5303        /*now, compute maximum:*/
     5304        maxabsvz=fabs(vz_values[0]);
     5305        for(i=1;i<numgrids;i++){
     5306                if (fabs(vz_values[i])>maxabsvz)maxabsvz=fabs(vz_values[i]);
     5307        }
     5308
     5309        /*Assign output pointers:*/
     5310        *pmaxabsvz=maxabsvz;
     5311}
     5312/*}}}*/
     5313/*FUNCTION Penta::ReinitializeInput(int reinitialized_enum,int original_enum){{{1*/
     5314void  Penta::ReinitializeInput(int reinitialized_enum,int original_enum){
     5315
     5316        Input* original=NULL;
     5317        Input* copy=NULL;
     5318
     5319        /*Make a copy of the original input: */
     5320        original=(Input*)this->inputs->GetInput(original_enum);
     5321        copy=(Input*)original->copy();
     5322
     5323        /*Change copy enum to reinitialized_enum: */
     5324        copy->ChangeEnum(reinitialized_enum);
     5325
     5326        /*Add copy into inputs, it will wipe off the one already there: */
     5327        inputs->AddObject((Input*)copy);
     5328}
     5329/*}}}*/
  • issm/trunk/src/c/objects/Elements/Penta.h

    r4042 r4043  
    7070                /*}}}*/
    7171                /*FUNCTION element numerical routines {{{1*/
    72                 void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
    73                 void  CreateKMatrixDiagnosticHoriz( Mat Kgg,  int analysis_type,int sub_analysis_type);
    74                 void  CreateKMatrixDiagnosticHutter( Mat Kgg,  int analysis_type,int sub_analysis_type);
    75                 void  CreateKMatrixDiagnosticVert( Mat Kgg,  int analysis_type,int sub_analysis_type);
    76                 void  CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type);
    77                 void  GetSolutionFromInputs(Vec solution,  int analysis_type,int sub_analysis_type);
    78                 void  GetSolutionFromInputsDiagnosticHoriz(Vec solution,int analysis_type,int sub_analysis_type);
    79                 void  GetSolutionFromInputsDiagnosticVert(Vec solution,int analysis_type,int sub_analysis_type);
    80                 void  GetSolutionFromInputsDiagnosticStokes(Vec solution,int analysis_type,int sub_analysis_type);
     72                void  CreateKMatrix(Mat Kggg);
     73                void  CreateKMatrixDiagnosticHoriz( Mat Kgg);
     74                void  CreateKMatrixDiagnosticHutter( Mat Kgg);
     75                void  CreateKMatrixDiagnosticVert( Mat Kgg);
     76                void  CreatePVector(Vec pg);
     77                void  GetSolutionFromInputs(Vec solution);
     78                void  GetSolutionFromInputsDiagnosticHoriz(Vec solutiong);
     79                void  GetSolutionFromInputsDiagnosticVert(Vec solutiong);
     80                void  GetSolutionFromInputsDiagnosticStokes(Vec solutiong);
    8181                void  GetDofList(int* doflist,int* pnumberofdofs);
    8282                void  GetDofList1(int* doflist);
    … …  
    8585                void  GetNodes(void** nodes);
    8686                bool   GetOnBed();
    87                 void  Du(Vec du_g,int analysis_type,int sub_analysis_type);
    88                 void  Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type);
    89                 void  GradjDrag(Vec grad_g,int analysis_type,int sub_analysis_type);
    90                 void  GradjB(Vec grad_g,int analysis_type,int sub_analysis_type);
    91                 double Misfit(int analysis_type,int sub_analysis_type);
    92                 double SurfaceArea(int analysis_type,int sub_analysis_type);
    93                 double CostFunction(int analysis_type,int sub_analysis_type);
    94                
    95                 void          GetThicknessList(double* thickness_list);
    96                 void          GetBedList(double* bed_list);
    97 
     87                void  Du(Vec du_gg);
     88                void  Gradj(Vec grad_gg,int control_type);
     89                void  GradjDrag(Vec grad_gg);
     90                void  GradjB(Vec grad_gg);
     91                double Misfit(void);
     92                double SurfaceArea(void);
     93                double CostFunction(void);
     94                void  GetThicknessList(double* thickness_list);
     95                void  GetBedList(double* bed_list);
    9896                void  GetStrainRate(double* epsilon, double* velocity, double* xyz_list, double* gauss_coord);
    9997                void  GetB(double* pB, double* xyz_list, double* gauss_coord);
    … …  
    106104                void  GetNodalFunctionsDerivativesReference(double* dl1dl6,double* gauss_coord);
    107105                void  GetJacobianInvert(double*  Jinv, double* xyz_list,double* gauss_coord);
    108                 void  CreatePVectorDiagnosticHoriz( Vec pg, int analysis_type,int sub_analysis_type);
    109                 void  CreatePVectorDiagnosticHutter( Vec pg, int analysis_type,int sub_analysis_type);
    110                 void  CreatePVectorDiagnosticVert( Vec pg, int analysis_type,int sub_analysis_type);
     106                void  CreatePVectorDiagnosticHoriz( Vec pg);
     107                void  CreatePVectorDiagnosticHutter( Vec pg);
     108                void  CreatePVectorDiagnosticVert( Vec pg);
    111109                void  GetParameterValue(double* pvalue, double* v_list,double* gauss_coord);
    112110                void  GetParameterDerivativeValue(double* p, double* p_list,double* xyz_list, double* gauss_coord);
    … …  
    115113                void  InputExtrude(int enum_type);
    116114                void  DepthAverageInputAtBase(int enum_type);
    117                 void  ComputeBasalStress(Vec sigma_b,int analysis_type,int sub_analysis_type);
    118                 void  ComputePressure(Vec p_g,int analysis_type,int sub_analysis_type);
    119                 void  ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type);
    120                 void  CreateKMatrixSlopeCompute(Mat Kgg,int analysis_type,int sub_analysis_type);
    121                 void  CreatePVectorSlopeCompute( Vec pg,  int analysis_type,int sub_analysis_type);
    122                 void  CreateKMatrixPrognostic(Mat Kgg,int analysis_type,int sub_analysis_type);
    123                 void  CreatePVectorPrognostic( Vec pg,  int analysis_type,int sub_analysis_type);
    124                 void  CreateKMatrixBalancedthickness(Mat Kgg,int analysis_type,int sub_analysis_type);
    125                 void  CreateKMatrixBalancedvelocities(Mat Kgg,int analysis_type,int sub_analysis_type);
    126                 void  CreateKMatrixDiagnosticStokes( Mat Kgg,  int analysis_type,int sub_analysis_type);
    127                 void  CreatePVectorBalancedthickness( Vec pg, int analysis_type,int sub_analysis_type);
    128                 void  CreatePVectorBalancedvelocities( Vec pg, int analysis_type,int sub_analysis_type);
    129                 void  CreatePVectorDiagnosticStokes( Vec pg, int analysis_type,int sub_analysis_type);
     115                void  ComputeBasalStress(Vec sigma_bg);
     116                void  ComputePressure(Vec p_gg);
     117                void  ComputeStrainRate(Vec epsg);
     118                void  CreateKMatrixSlopeCompute(Mat Kggg);
     119                void  CreatePVectorSlopeCompute( Vec pg);
     120                void  CreateKMatrixPrognostic(Mat Kggg);
     121                void  CreatePVectorPrognostic( Vec pg);
     122                void  CreateKMatrixBalancedthickness(Mat Kggg);
     123                void  CreateKMatrixBalancedvelocities(Mat Kggg);
     124                void  CreateKMatrixDiagnosticStokes( Mat Kgg);
     125                void  CreatePVectorBalancedthickness( Vec pg);
     126                void  CreatePVectorBalancedvelocities( Vec pg);
     127                void  CreatePVectorDiagnosticStokes( Vec pg);
    130128                void  ReduceMatrixStokes(double* Ke_reduced, double* Ke_temp);
    131129                void  GetMatrixInvert(double*  Ke_invert, double* Ke);
    … …  
    140138                void  ReduceVectorStokes(double* Pe_reduced, double* Ke_temp, double* Pe_temp);
    141139                void  GetNodalFunctionsStokes(double* l1l7, double* gauss_coord);
    142                 void  CreateKMatrixThermal(Mat Kgg,int analysis_type,int sub_analysis_type);
     140                void  CreateKMatrixThermal(Mat Kggg);
    143141                void  GetB_conduct(double* B_conduct, double* xyz_list, double* gauss_coord);
    144142                void  GetB_advec(double* B_advec, double* xyz_list, double* gauss_coord);
    145143                void  GetBprime_advec(double* Bprime_advec, double* xyz_list, double* gauss_coord);
    146144                void  GetB_artdiff(double* B_artdiff, double* xyz_list, double* gauss_coord);
    147                 void  CreateKMatrixMelting(Mat Kgg,int analysis_type,int sub_analysis_type);
    148                 void  CreatePVectorThermal( Vec pg, int analysis_type,int sub_analysis_type);
    149                 void  CreatePVectorMelting( Vec pg, int analysis_type,int sub_analysis_type);
     145                void  CreateKMatrixMelting(Mat Kggg);
     146                void  CreatePVectorThermal( Vec pg);
     147                void  CreatePVectorMelting( Vec pg);
    150148                void  GetPhi(double* phi, double*  epsilon, double viscosity);
    151                 double MassFlux(double* segment,double* ug);
     149                double MassFlux(double* segment);
    152150                void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
    153151                void  PatchFill(int* pcount, Patch* patch);
    154152                void  MinVel(double* pminvel, bool process_units);
    155153                void  MaxVel(double* pmaxvel, bool process_units);
     154                void  MinVx(double* pminvx, bool process_units);
     155                void  MaxVx(double* pmaxvx, bool process_units);
     156                void  MaxAbsVx(double* pmaxabsvx, bool process_units);
     157                void  MinVy(double* pminvy, bool process_units);
     158                void  MaxVy(double* pmaxvy, bool process_units);
     159                void  MaxAbsVy(double* pmaxabsvy, bool process_units);
     160                void  MinVz(double* pminvz, bool process_units);
     161                void  MaxVz(double* pmaxvz, bool process_units);
     162                void  MaxAbsVz(double* pmaxabsvz, bool process_units);
     163                void  ReinitializeInput(int reinitialized_enum,int original_enum);
     164
    156165
    157166                /*updates: */
    158167                void  UpdateFromDakota(void* inputs);
    159                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
    160                 void  UpdateInputsFromSolutionDiagnosticHoriz( double* solution,int analysis_type,int sub_analysis_type);
    161                 void  UpdateInputsFromSolutionDiagnosticStokes( double* solution,int analysis_type,int sub_analysis_type);
    162                 void  UpdateInputsFromSolutionSlopeCompute( double* solution,int analysis_type,int sub_analysis_type);
    163                 void  UpdateInputsFromSolutionPrognostic( double* solution,int analysis_type,int sub_analysis_type);
    164                 void  UpdateInputsFromSolutionPrognostic2(double* solution,int analysis_type,int sub_analysis_type);
    165                 void  UpdateInputsFromSolutionBalancedthickness( double* solution,int analysis_type,int sub_analysis_type);
    166                 void  UpdateInputsFromSolutionBalancedthickness2( double* solution,int analysis_type,int sub_analysis_type);
    167                 void  UpdateInputsFromSolutionBalancedvelocities( double* solution,int analysis_type,int sub_analysis_type);
     168                void  UpdateInputsFromSolution(double* solutiong);
     169                void  UpdateInputsFromSolutionDiagnosticHoriz( double* solutiong);
     170                void  UpdateInputsFromSolutionDiagnosticStokes( double* solutiong);
     171                void  UpdateInputsFromSolutionSlopeCompute( double* solutiong);
     172                void  UpdateInputsFromSolutionPrognostic( double* solutiong);
     173                void  UpdateInputsFromSolutionPrognostic2(double* solutiong);
     174                void  UpdateInputsFromSolutionBalancedthickness( double* solutiong);
     175                void  UpdateInputsFromSolutionBalancedthickness2( double* solutiong);
     176                void  UpdateInputsFromSolutionBalancedvelocities( double* solutiong);
    168177                void  UpdateInputsFromVector(double* vector, int name, int type);
    169178                void  UpdateInputsFromVector(int* vector, int name, int type);
  • issm/trunk/src/c/objects/Elements/Sing.cpp

    r4042 r4043  
    128128/*}}}*/
    129129/*FUNCTION Sing::UpdateInputsFromSolution {{{1*/
    130 void  Sing::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
    131         ISSMERROR(" not supported yet!");
    132 }
    133 /*}}}*/
    134 /*FUNCTION Sing::GetSolutionFromInputs(Vec solution,  int analysis_type,int sub_analysis_type);{{{1*/
    135 void  Sing::GetSolutionFromInputs(Vec solution,  int analysis_type,int sub_analysis_type){
     130void  Sing::UpdateInputsFromSolution(double* solution){
     131        ISSMERROR(" not supported yet!");
     132}
     133/*}}}*/
     134/*FUNCTION Sing::GetSolutionFromInputs(Vec solution);{{{1*/
     135void  Sing::GetSolutionFromInputs(Vec solution){
    136136        ISSMERROR(" not supported yet!");
    137137}
    … …  
    150150/*Object functions*/
    151151/*FUNCTION Sing::ComputeBasalStress {{{1*/
    152 void  Sing::ComputeBasalStress(Vec p_g,int analysis_type,int sub_analysis_type){
     152void  Sing::ComputeBasalStress(Vec p_g){
    153153
    154154        ISSMERROR("Not implemented yet");
    … …  
    157157/*}}}*/
    158158/*FUNCTION Sing::ComputePressure {{{1*/
    159 void  Sing::ComputePressure(Vec p_g,int analysis_type,int sub_analysis_type){
     159void  Sing::ComputePressure(Vec p_g){
    160160
    161161        int    dof;
    … …  
    179179/*}}}*/
    180180/*FUNCTION Sing::ComputeStrainRate {{{1*/
    181 void  Sing::ComputeStrainRate(Vec p_g,int analysis_type,int sub_analysis_type){
     181void  Sing::ComputeStrainRate(Vec p_g){
    182182
    183183        ISSMERROR("Not implemented yet");
    … …  
    186186/*}}}*/
    187187/*FUNCTION Sing::CostFunction {{{1*/
    188 double Sing::CostFunction( int,int){
     188double Sing::CostFunction(){
    189189        ISSMERROR(" not supported yet!");
    190190}
    … …  
    192192/*FUNCTION Sing::CreateKMatrix {{{1*/
    193193
    194 void  Sing::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){
     194void  Sing::CreateKMatrix(Mat Kgg){
     195
     196        int analysis_type,sub_analysis_type;
     197
     198        /*retrive parameters: */
     199        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     200        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    195201
    196202        /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
    197203        if ((analysis_type==DiagnosticAnalysisEnum) && (sub_analysis_type==HutterAnalysisEnum)){
    198204
    199                 CreateKMatrixDiagnosticHutter( Kgg,analysis_type,sub_analysis_type);
     205                CreateKMatrixDiagnosticHutter( Kgg);
    200206
    201207        }
    … …  
    207213/*}}}*/
    208214/*FUNCTION Sing::CreateKMatrixDiagnosticHutter {{{1*/
    209 void  Sing::CreateKMatrixDiagnosticHutter(Mat Kgg,int analysis_type,int sub_analysis_type){
     215void  Sing::CreateKMatrixDiagnosticHutter(Mat Kgg){
    210216       
    211217        const int numgrids=1;
    … …  
    229235/*}}}*/
    230236/*FUNCTION Sing::CreatePVector {{{1*/
    231 void  Sing::CreatePVector(Vec pg,int analysis_type,int sub_analysis_type){
     237void  Sing::CreatePVector(Vec pg){
     238
     239        int analysis_type,sub_analysis_type;
     240
     241        /*retrive parameters: */
     242        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     243        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    232244       
    233245        /*Just branch to the correct load generator, according to the type of analysis we are carrying out: */
    234246        if ((analysis_type==DiagnosticAnalysisEnum) && (sub_analysis_type==HutterAnalysisEnum)){
    235247       
    236                         CreatePVectorDiagnosticHutter( pg,analysis_type,sub_analysis_type);
     248                        CreatePVectorDiagnosticHutter( pg);
    237249
    238250        }
    … …  
    244256/*}}}*/
    245257/*FUNCTION Sing::CreatePVectorDiagnosticHutter {{{1*/
    246 void Sing::CreatePVectorDiagnosticHutter( Vec pg,  int analysis_type,int sub_analysis_type){
     258void Sing::CreatePVectorDiagnosticHutter( Vec pg){
    247259       
    248260        const int numgrids=1;
    … …  
    294306/*}}}*/
    295307/*FUNCTION Sing::Du {{{1*/
    296 void  Sing::Du(Vec,int,int){
     308void  Sing::Du(Vec){
    297309        ISSMERROR(" not supported yet!");
    298310}
    … …  
    371383/*}}}*/
    372384/*FUNCTION Sing::Gradj {{{1*/
    373 void  Sing::Gradj(Vec,  int, int ,int){
     385void  Sing::Gradj(Vec,  int control_type){
    374386        ISSMERROR(" not supported yet!");
    375387}
    376388/*}}}*/
    377389/*FUNCTION Sing::GradB {{{1*/
    378 void  Sing::GradjB(Vec,  int,int){
     390void  Sing::GradjB(Vec){
    379391        ISSMERROR(" not supported yet!");
    380392}
    381393/*}}}*/
    382394/*FUNCTION Sing::GradjDrag {{{1*/
    383 void  Sing::GradjDrag(Vec,  int,int){
     395void  Sing::GradjDrag(Vec){
    384396        ISSMERROR(" not supported yet!");
    385397}
    386398/*}}}*/
    387399/*FUNCTION Sing::MassFlux {{{1*/
    388 double Sing::MassFlux( double* segment,double* ug){
     400double Sing::MassFlux( double* segment){
    389401        ISSMERROR(" not supported yet!");
    390402}
    391403/*}}}*/
    392404/*FUNCTION Sing::Misfit {{{1*/
    393 double Sing::Misfit( int,int){
     405double Sing::Misfit(void){
    394406        ISSMERROR(" not supported yet!");
    395407}
    … …  
    402414/*}}}*/
    403415/*FUNCTION Sing::SurfaceArea {{{1*/
    404 double Sing::SurfaceArea( int,int){
     416double Sing::SurfaceArea( void){
    405417        ISSMERROR(" not supported yet!");
    406418}
    … …  
    463475void  Sing::MinVel(double* pminvel, bool process_units){
    464476
     477        int dim;
    465478        double  vx;
    466479        double  vy;
    … …  
    489502void  Sing::MaxVel(double* pmaxvel, bool process_units){
    490503
     504        int dim;
    491505        double  vx;
    492506        double  vy;
    … …  
    512526}
    513527/*}}}*/
     528/*FUNCTION Sing::MinVx(double* pminvx, bool process_units);{{{1*/
     529void  Sing::MinVx(double* pminvx, bool process_units){
     530
     531        int dim;
     532        double  minvx;
     533
     534        /*retrieve dim parameter: */
     535        parameters->FindParam(&dim,DimEnum);
     536
     537        /*retrive velocity values at nodes */
     538        inputs->GetParameterValue(&minvx,VxEnum);
     539
     540        /*Assign output pointers:*/
     541        *pminvx=minvx;
     542
     543}
     544/*}}}*/
     545/*FUNCTION Sing::MaxVx(double* pmaxvx, bool process_units);{{{1*/
     546void  Sing::MaxVx(double* pmaxvx, bool process_units){
     547
     548        int dim;
     549        double  maxvx;
     550
     551        /*retrieve dim parameter: */
     552        parameters->FindParam(&dim,DimEnum);
     553
     554        /*retrive velocity values at nodes */
     555        inputs->GetParameterValue(&maxvx,VxEnum);
     556
     557        /*Assign output pointers:*/
     558        *pmaxvx=maxvx;
     559
     560}
     561/*}}}*/
     562/*FUNCTION Sing::MaxAbsVx(double* pmaxabsvx, bool process_units);{{{1*/
     563void  Sing::MaxAbsVx(double* pmaxabsvx, bool process_units){
     564
     565        int dim;
     566        double  maxabsvx;
     567
     568        /*retrieve dim parameter: */
     569        parameters->FindParam(&dim,DimEnum);
     570
     571        /*retrive velocity values at nodes */
     572        inputs->GetParameterValue(&maxabsvx,VxEnum);
     573        maxabsvx=fabs(maxabsvx);
     574
     575        /*Assign output pointers:*/
     576        *pmaxabsvx=maxabsvx;
     577}
     578/*}}}*/
     579/*FUNCTION Sing::MinVy(double* pminvy, bool process_units);{{{1*/
     580void  Sing::MinVy(double* pminvy, bool process_units){
     581
     582        int dim;
     583        double  minvy;
     584
     585        /*retrieve dim parameter: */
     586        parameters->FindParam(&dim,DimEnum);
     587
     588        /*retrive velocity values at nodes */
     589        inputs->GetParameterValue(&minvy,VyEnum);
     590
     591        /*Assign output pointers:*/
     592        *pminvy=minvy;
     593
     594}
     595/*}}}*/
     596/*FUNCTION Sing::MaxVy(double* pmaxvy, bool process_units);{{{1*/
     597void  Sing::MaxVy(double* pmaxvy, bool process_units){
     598
     599        int dim;
     600        double  maxvy;
     601
     602        /*retrieve dim parameter: */
     603        parameters->FindParam(&dim,DimEnum);
     604
     605        /*retrive velocity values at nodes */
     606        inputs->GetParameterValue(&maxvy,VyEnum);
     607
     608        /*Assign output pointers:*/
     609        *pmaxvy=maxvy;
     610
     611}
     612/*}}}*/
     613/*FUNCTION Sing::MaxAbsVy(double* pmaxabsvy, bool process_units);{{{1*/
     614void  Sing::MaxAbsVy(double* pmaxabsvy, bool process_units){
     615
     616        int dim;
     617        double  maxabsvy;
     618
     619        /*retrieve dim parameter: */
     620        parameters->FindParam(&dim,DimEnum);
     621
     622        /*retrive velocity values at nodes */
     623        inputs->GetParameterValue(&maxabsvy,VyEnum);
     624        maxabsvy=fabs(maxabsvy);
     625
     626        /*Assign output pointers:*/
     627        *pmaxabsvy=maxabsvy;
     628}
     629/*}}}*/
     630/*FUNCTION Sing::MinVz(double* pminvz, bool process_units);{{{1*/
     631void  Sing::MinVz(double* pminvz, bool process_units){
     632
     633        int dim;
     634        double  minvz;
     635
     636        /*retrieve dim parameter: */
     637        parameters->FindParam(&dim,DimEnum);
     638
     639        /*retrive velocity values at nodes */
     640        inputs->GetParameterValue(&minvz,VzEnum);
     641
     642        /*Assign output pointers:*/
     643        *pminvz=minvz;
     644
     645}
     646/*}}}*/
     647/*FUNCTION Sing::MaxVz(double* pmaxvz, bool process_units);{{{1*/
     648void  Sing::MaxVz(double* pmaxvz, bool process_units){
     649
     650        int dim;
     651        double  maxvz;
     652
     653        /*retrieve dim parameter: */
     654        parameters->FindParam(&dim,DimEnum);
     655
     656        /*retrive velocity values at nodes */
     657        inputs->GetParameterValue(&maxvz,VzEnum);
     658
     659        /*Assign output pointers:*/
     660        *pmaxvz=maxvz;
     661
     662}
     663/*}}}*/
     664/*FUNCTION Sing::MaxAbsVz(double* pmaxabsvz, bool process_units);{{{1*/
     665void  Sing::MaxAbsVz(double* pmaxabsvz, bool process_units){
     666
     667        int dim;
     668        double  maxabsvz;
     669
     670        /*retrieve dim parameter: */
     671        parameters->FindParam(&dim,DimEnum);
     672
     673        /*retrive velocity values at nodes */
     674        inputs->GetParameterValue(&maxabsvz,VzEnum);
     675        maxabsvz=fabs(maxabsvz);
     676
     677        /*Assign output pointers:*/
     678        *pmaxabsvz=maxabsvz;
     679}
     680/*}}}*/
     681/*FUNCTION Sing::ReinitializeInput(int reinitialized_enum,int original_enum){{{1*/
     682void  Sing::ReinitializeInput(int reinitialized_enum,int original_enum){
     683
     684        Input* original=NULL;
     685        Input* copy=NULL;
     686
     687        /*Make a copy of the original input: */
     688        original=(Input*)this->inputs->GetInput(original_enum);
     689        copy=(Input*)original->copy();
     690
     691        /*Change copy enum to reinitialized_enum: */
     692        copy->ChangeEnum(reinitialized_enum);
     693
     694        /*Add copy into inputs, it will wipe off the one already there: */
     695        inputs->AddObject((Input*)copy);
     696}
     697/*}}}*/
  • issm/trunk/src/c/objects/Elements/Sing.h

    r4042 r4043  
    6161                void  UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
    6262                void  UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    63                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
     63                void  UpdateInputsFromSolution(double* solutiong);
    6464                void  DepthAverageInputAtBase(int enum_type){ISSMERROR("not implemented yet");};
    6565                void  InputToResult(int enum_type,int step,double time);
    … …  
    6767                /*}}}*/
    6868                /*numerics: {{{1*/
    69                 void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
    70                 void  CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type);
     69                void  CreateKMatrix(Mat Kggg);
     70                void  CreatePVector(Vec pg);
    7171                void  GetDofList(int* doflist,int* pnumberofdofs);
    72                 void  GetSolutionFromInputs(Vec solution,  int analysis_type,int sub_analysis_type);
     72                void  GetSolutionFromInputs(Vec solution);
    7373                void  GetDofList1(int* doflist);
    74                 void  CreateKMatrixDiagnosticHutter(Mat Kgg,int analysis_type,int sub_analysis_type);
     74                void  CreateKMatrixDiagnosticHutter(Mat Kggg);
    7575                void  GetParameterValue(double* pp, double* plist, double* gauss_l1l2l3);
    76                 void  CreatePVectorDiagnosticHutter(Vec pg,int analysis_type,int sub_analysis_type);
     76                void  CreatePVectorDiagnosticHutter(Vec pgg);
    7777                void* GetMatPar();
    78                 void  ComputeBasalStress(Vec sigma_b,int analysis_type,int sub_analysis_type);
    79                 void  ComputePressure(Vec p_g,int analysis_type,int sub_analysis_type);
    80                 void  ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type);
     78                void  ComputeBasalStress(Vec sigma_bg);
     79                void  ComputePressure(Vec p_gg);
     80                void  ComputeStrainRate(Vec epsg);
    8181                void  GetNodes(void** vpnodes);
    8282                void  PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
    … …  
    8484                void  MinVel(double* pminvel, bool process_units);
    8585                void  MaxVel(double* pmaxvel, bool process_units);
     86                void  MinVx(double* pminvx, bool process_units);
     87                void  MaxVx(double* pmaxvx, bool process_units);
     88                void  MaxAbsVx(double* pmaxabsvx, bool process_units);
     89                void  MinVy(double* pminvy, bool process_units);
     90                void  MaxVy(double* pmaxvy, bool process_units);
     91                void  MaxAbsVy(double* pmaxabsvy, bool process_units);
     92                void  MinVz(double* pminvz, bool process_units);
     93                void  MaxVz(double* pmaxvz, bool process_units);
     94                void  MaxAbsVz(double* pmaxabsvz, bool process_units);
     95                void  ReinitializeInput(int reinitialized_enum,int original_enum);
     96
    8697
    8798                /*}}}*/
    … …  
    91102                void  GetBedList(double*);
    92103                void  GetThicknessList(double* thickness_list);
    93                 void  Du(Vec,int,int);
    94                 void  Gradj(Vec, int, int,int);
    95                 void  GradjDrag(Vec , int,int);
    96                 void  GradjB(Vec,  int,int);
    97                 double Misfit(int,int);
    98                 double SurfaceArea(int,int);
    99                 double CostFunction(int,int);
    100                 double MassFlux(double* segment,double* ug);
     104                void  Du(Vec);
     105                void  Gradj(Vec, int control_type);
     106                void  GradjDrag(Vec);
     107                void  GradjB(Vec);
     108                double Misfit(void);
     109                double SurfaceArea(void);
     110                double CostFunction(void);
     111                double MassFlux(double* segment);
    101112                /*}}}*/
    102113
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r4042 r4043  
    551551/*}}}*/
    552552/*FUNCTION Tria::UpdateInputsFromSolution {{{1*/
    553 void  Tria::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
     553void  Tria::UpdateInputsFromSolution(double* solution){
     554
     555        int analysis_type,sub_analysis_type;
     556
     557        /*retrive parameters: */
     558        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     559        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    554560
    555561        /*Just branch to the correct UpdateInputsFromSolution generator, according to the type of analysis we are carrying out: */
    556562        if (analysis_type==ControlAnalysisEnum){
    557                 UpdateInputsFromSolutionDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
     563                UpdateInputsFromSolutionDiagnosticHoriz( solution);
    558564        }
    559565        else if (analysis_type==DiagnosticAnalysisEnum){
    560566                if (sub_analysis_type==HorizAnalysisEnum){
    561                         UpdateInputsFromSolutionDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
     567                        UpdateInputsFromSolutionDiagnosticHoriz( solution);
    562568                }
    563569                else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
    564570        }
    565571        else if (analysis_type==SlopeComputeAnalysisEnum){
    566                 UpdateInputsFromSolutionSlopeCompute( solution,analysis_type,sub_analysis_type);
     572                UpdateInputsFromSolutionSlopeCompute( solution);
    567573        }
    568574        else if (analysis_type==PrognosticAnalysisEnum){
    569                 UpdateInputsFromSolutionPrognostic( solution,analysis_type,sub_analysis_type);
     575                UpdateInputsFromSolutionPrognostic( solution);
    570576        }
    571577        else if (analysis_type==Prognostic2AnalysisEnum){
    572                 UpdateInputsFromSolutionPrognostic2(solution,analysis_type,sub_analysis_type);
     578                UpdateInputsFromSolutionPrognostic2(solution);
    573579        }
    574580        else if (analysis_type==BalancedthicknessAnalysisEnum){
    575                 UpdateInputsFromSolutionBalancedthickness( solution,analysis_type,sub_analysis_type);
     581                UpdateInputsFromSolutionBalancedthickness( solution);
    576582        }
    577583        else if (analysis_type==Balancedthickness2AnalysisEnum){
    578                 UpdateInputsFromSolutionBalancedthickness2( solution,analysis_type,sub_analysis_type);
     584                UpdateInputsFromSolutionBalancedthickness2( solution);
    579585        }
    580586        else if (analysis_type==BalancedvelocitiesAnalysisEnum){
    581                 UpdateInputsFromSolutionBalancedvelocities( solution,analysis_type,sub_analysis_type);
     587                UpdateInputsFromSolutionBalancedvelocities( solution);
    582588        }
    583589        else{
    … …  
    587593/*}}}*/
    588594/*FUNCTION Tria::UpdateInputsFromSolutionDiagnosticHoriz {{{1*/
    589 void  Tria::UpdateInputsFromSolutionDiagnosticHoriz(double* solution, int analysis_type, int sub_analysis_type){
     595void  Tria::UpdateInputsFromSolutionDiagnosticHoriz(double* solution){
    590596       
    591597        int i;
    … …  
    647653/*}}}*/
    648654/*FUNCTION Tria::UpdateInputsFromSolutionSlopeCompute {{{1*/
    649 void  Tria::UpdateInputsFromSolutionSlopeCompute(double* solution, int analysis_type, int sub_analysis_type){
     655void  Tria::UpdateInputsFromSolutionSlopeCompute(double* solution){
    650656        ISSMERROR(" not supported yet!");
    651657}
    652658/*}}}*/
    653659/*FUNCTION Tria::UpdateInputsFromSolutionPrognostic {{{1*/
    654 void  Tria::UpdateInputsFromSolutionPrognostic(double* solution, int analysis_type, int sub_analysis_type){
     660void  Tria::UpdateInputsFromSolutionPrognostic(double* solution){
    655661
    656662        int i;
    … …  
    679685/*}}}*/
    680686/*FUNCTION Tria::UpdateInputsFromSolutionPrognostic2 {{{1*/
    681 void  Tria::UpdateInputsFromSolutionPrognostic2(double* solution, int analysis_type, int sub_analysis_type){
     687void  Tria::UpdateInputsFromSolutionPrognostic2(double* solution){
    682688        ISSMERROR(" not supported yet!");
    683689}
    684690/*}}}*/
    685691/*FUNCTION Tria::UpdateInputsFromSolutionBalancedthickness {{{1*/
    686 void  Tria::UpdateInputsFromSolutionBalancedthickness(double* solution, int analysis_type, int sub_analysis_type){
     692void  Tria::UpdateInputsFromSolutionBalancedthickness(double* solution){
    687693
    688694        int i;
    … …  
    711717/*}}}*/
    712718/*FUNCTION Tria::UpdateInputsFromSolutionBalancedthickness2 {{{1*/
    713 void  Tria::UpdateInputsFromSolutionBalancedthickness2(double* solution, int analysis_type, int sub_analysis_type){
     719void  Tria::UpdateInputsFromSolutionBalancedthickness2(double* solution){
    714720        ISSMERROR(" not supported yet!");
    715721}
    716722/*}}}*/
    717723/*FUNCTION Tria::UpdateInputsFromSolutionBalancedvelocities {{{1*/
    718 void  Tria::UpdateInputsFromSolutionBalancedvelocities(double* solution, int analysis_type, int sub_analysis_type){
     724void  Tria::UpdateInputsFromSolutionBalancedvelocities(double* solution){
    719725        ISSMERROR(" not supported yet!");
    720726}
    721727/*}}}*/
    722 /*FUNCTION Tria::GetSolutionFromInputs(Vec solution,int analysis_type,int sub_analysis_type){{{1*/
    723 void  Tria::GetSolutionFromInputs(Vec solution,int analysis_type,int sub_analysis_type){
     728/*FUNCTION Tria::GetSolutionFromInputs(Vec solution){{{1*/
     729void  Tria::GetSolutionFromInputs(Vec solution){
     730
     731        int analysis_type,sub_analysis_type;
     732
     733        /*retrive parameters: */
     734        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     735        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
     736       
    724737        /*Just branch to the correct UpdateInputsFromSolution generator, according to the type of analysis we are carrying out: */
    725738        if (analysis_type==DiagnosticAnalysisEnum){
    726739                if (sub_analysis_type==HorizAnalysisEnum){
    727                         GetSolutionFromInputsDiagnosticHoriz(solution,analysis_type,sub_analysis_type);
     740                        GetSolutionFromInputsDiagnosticHoriz(solution);
    728741                }
    729742                else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
    … …  
    734747}
    735748/*}}}*/
    736 /*FUNCTION Tria::GetSolutionFromInputsDiagnosticHoriz(Vec solution,int analysis_type,int sub_analysis_type){{{1*/
    737 void  Tria::GetSolutionFromInputsDiagnosticHoriz(Vec solution,int analysis_type,int sub_analysis_type){
     749/*FUNCTION Tria::GetSolutionFromInputsDiagnosticHoriz(Vec solution){{{1*/
     750void  Tria::GetSolutionFromInputsDiagnosticHoriz(Vec solution){
    738751
    739752        int i;
    … …  
    782795/*}}}*/
    783796/*FUNCTION Tria::ComputeBasalStress {{{1*/
    784 void  Tria::ComputeBasalStress(Vec eps,int analysis_type,int sub_analysis_type){
     797void  Tria::ComputeBasalStress(Vec eps){
    785798
    786799        int i;
    … …  
    796809/*}}}*/
    797810/*FUNCTION Tria::ComputePressure {{{1*/
    798 void  Tria::ComputePressure(Vec pg,int analysis_type,int sub_analysis_type){
     811void  Tria::ComputePressure(Vec pg){
    799812
    800813        int i;
    … …  
    826839/*}}}*/
    827840/*FUNCTION Tria::ComputeStrainRate {{{1*/
    828 void  Tria::ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type){
     841void  Tria::ComputeStrainRate(Vec eps){
    829842
    830843        int i;
    … …  
    840853/*}}}*/
    841854/*FUNCTION Tria::CostFunction {{{1*/
    842 double Tria::CostFunction(int analysis_type,int sub_analysis_type){
     855double Tria::CostFunction(void){
    843856
    844857        int i;
    … …  
    897910
    898911        /*First, get Misfit*/
    899         Jelem=Misfit(analysis_type,sub_analysis_type);
     912        Jelem=Misfit();
    900913
    901914          /* Get gaussian points and weights (make this a statically initialized list of points? fstd): */
    … …  
    941954/*}}}*/
    942955/*FUNCTION Tria::CreateKMatrix {{{1*/
    943 void  Tria::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){
     956void  Tria::CreateKMatrix(Mat Kgg){
     957
     958        int analysis_type,sub_analysis_type;
     959
     960        /*retrive parameters: */
     961        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     962        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    944963
    945964        /*asserts: {{{2*/
    … …  
    949968        /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
    950969        if (analysis_type==ControlAnalysisEnum){
    951                 CreateKMatrixDiagnosticHoriz( Kgg,analysis_type,sub_analysis_type);
     970                CreateKMatrixDiagnosticHoriz( Kgg);
    952971        }
    953972        else if (analysis_type==DiagnosticAnalysisEnum){
    954973                if (sub_analysis_type==HorizAnalysisEnum){
    955                         CreateKMatrixDiagnosticHoriz( Kgg,analysis_type,sub_analysis_type);
     974                        CreateKMatrixDiagnosticHoriz( Kgg);
    956975                }
    957976                else if (sub_analysis_type==HutterAnalysisEnum){
    958                         CreateKMatrixDiagnosticHutter( Kgg,analysis_type,sub_analysis_type);
     977                        CreateKMatrixDiagnosticHutter( Kgg);
    959978                }
    960979                else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
    961980        }
    962981        else if (analysis_type==SlopeComputeAnalysisEnum){
    963                 CreateKMatrixSlopeCompute( Kgg,analysis_type,sub_analysis_type);
     982                CreateKMatrixSlopeCompute( Kgg);
    964983        }
    965984        else if (analysis_type==PrognosticAnalysisEnum){
    966                 CreateKMatrixPrognostic( Kgg,analysis_type,sub_analysis_type);
     985                CreateKMatrixPrognostic( Kgg);
    967986        }
    968987        else if (analysis_type==Prognostic2AnalysisEnum){
    969                 CreateKMatrixPrognostic2(Kgg,analysis_type,sub_analysis_type);
     988                CreateKMatrixPrognostic2(Kgg);
    970989        }
    971990        else if (analysis_type==BalancedthicknessAnalysisEnum){
    972                 CreateKMatrixBalancedthickness( Kgg,analysis_type,sub_analysis_type);
     991                CreateKMatrixBalancedthickness( Kgg);
    973992        }
    974993        else if (analysis_type==Balancedthickness2AnalysisEnum){
    975                 CreateKMatrixBalancedthickness2( Kgg,analysis_type,sub_analysis_type);
     994                CreateKMatrixBalancedthickness2( Kgg);
    976995        }
    977996        else if (analysis_type==BalancedvelocitiesAnalysisEnum){
    978                 CreateKMatrixBalancedvelocities( Kgg,analysis_type,sub_analysis_type);
     997                CreateKMatrixBalancedvelocities( Kgg);
    979998        }
    980999        else{
    … …  
    9851004/*}}}*/
    9861005/*FUNCTION Tria::CreateKMatrixBalancedthickness {{{1*/
    987 void  Tria::CreateKMatrixBalancedthickness(Mat Kgg,int analysis_type,int sub_analysis_type){
     1006void  Tria::CreateKMatrixBalancedthickness(Mat Kgg){
    9881007
    9891008        /* local declarations */
    … …  
    11411160/*}}}*/
    11421161/*FUNCTION Tria::CreateKMatrixBalancedthickness2 {{{1*/
    1143 void  Tria::CreateKMatrixBalancedthickness2(Mat Kgg,int analysis_type,int sub_analysis_type){
     1162void  Tria::CreateKMatrixBalancedthickness2(Mat Kgg){
    11441163
    11451164        /* local declarations */
    … …  
    12331252/*}}}*/
    12341253/*FUNCTION Tria::CreateKMatrixBalancedvelocities {{{1*/
    1235 void  Tria::CreateKMatrixBalancedvelocities(Mat Kgg,int analysis_type,int sub_analysis_type){
     1254void  Tria::CreateKMatrixBalancedvelocities(Mat Kgg){
    12361255
    12371256        /* local declarations */
    … …  
    14011420/*}}}*/
    14021421/*FUNCTION Tria::CreateKMatrixDiagnosticHoriz {{{1*/
    1403 void  Tria::CreateKMatrixDiagnosticHoriz(Mat Kgg,int analysis_type,int sub_analysis_type){
     1422void  Tria::CreateKMatrixDiagnosticHoriz(Mat Kgg){
    14041423
    14051424        /* local declarations */
    … …  
    15221541        /*Do not forget to include friction: */
    15231542        if(!shelf){
    1524                 CreateKMatrixDiagnosticHorizFriction(Kgg,analysis_type,sub_analysis_type);
     1543                CreateKMatrixDiagnosticHorizFriction(Kgg);
    15251544        }
    15261545
    … …  
    15341553/*}}}*/
    15351554/*FUNCTION Tria::CreateKMatrixDiagnosticHorizFriction {{{1*/
    1536 void  Tria::CreateKMatrixDiagnosticHorizFriction(Mat Kgg,int analysis_type,int sub_analysis_type){
     1555void  Tria::CreateKMatrixDiagnosticHorizFriction(Mat Kgg){
    15371556
    15381557
    15391558        /* local declarations */
    15401559        int             i,j;
     1560        int analysis_type;
    15411561
    15421562        /* node data: */
    … …  
    15821602        int  drag_type;
    15831603
     1604        /*retrive parameters: */
     1605        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     1606
    15841607        /*retrieve inputs :*/
    15851608        inputs->GetParameterValue(&shelf,ElementOnIceShelfEnum);
    … …  
    16571680/*}}}*/
    16581681/*FUNCTION Tria::CreateKMatrixDiagnosticHutter{{{1*/
    1659 void  Tria::CreateKMatrixDiagnosticHutter(Mat Kgg,int analysis_type,int sub_analysis_type){
     1682void  Tria::CreateKMatrixDiagnosticHutter(Mat Kgg){
    16601683
    16611684        /*Collapsed formulation: */
    … …  
    16751698        for(i=0;i<3;i++){
    16761699                sing=(Sing*)SpawnSing(i);
    1677                 sing->CreateKMatrix(Kgg,analysis_type,sub_analysis_type);
     1700                sing->CreateKMatrix(Kgg);
    16781701        }
    16791702
    … …  
    16841707/*}}}*/
    16851708/*FUNCTION Tria::CreateKMatrixDiagnosticSurfaceVert {{{1*/
    1686 void  Tria::CreateKMatrixDiagnosticSurfaceVert(Mat Kgg,int analysis_type,int sub_analysis_type){
     1709void  Tria::CreateKMatrixDiagnosticSurfaceVert(Mat Kgg){
    16871710
    16881711        int i,j;
    … …  
    18021825/*}}}*/
    18031826/*FUNCTION Tria::CreateKMatrixMelting {{{1*/
    1804 void  Tria::CreateKMatrixMelting(Mat Kgg,int analysis_type,int sub_analysis_type){
     1827void  Tria::CreateKMatrixMelting(Mat Kgg){
    18051828
    18061829        /*indexing: */
    … …  
    18861909/*}}}*/
    18871910/*FUNCTION Tria::CreateKMatrixPrognostic {{{1*/
    1888 void  Tria::CreateKMatrixPrognostic(Mat Kgg,int analysis_type,int sub_analysis_type){
     1911void  Tria::CreateKMatrixPrognostic(Mat Kgg){
    18891912
    18901913        /* local declarations */
    … …  
    20562079/*}}}*/
    20572080/*FUNCTION Tria::CreateKMatrixPrognostic2 {{{1*/
    2058 void  Tria::CreateKMatrixPrognostic2(Mat Kgg,int analysis_type,int sub_analysis_type){
     2081void  Tria::CreateKMatrixPrognostic2(Mat Kgg){
    20592082
    20602083        /* local declarations */
    … …  
    21712194/*FUNCTION Tria::CreateKMatrixSlopeCompute {{{1*/
    21722195
    2173 void  Tria::CreateKMatrixSlopeCompute(Mat Kgg,int analysis_type,int sub_analysis_type){
     2196void  Tria::CreateKMatrixSlopeCompute(Mat Kgg){
    21742197
    21752198        /* local declarations */
    … …  
    22482271/*}}}*/
    22492272/*FUNCTION Tria::CreateKMatrixThermal {{{1*/
    2250 void  Tria::CreateKMatrixThermal(Mat Kgg,int analysis_type,int sub_analysis_type){
     2273void  Tria::CreateKMatrixThermal(Mat Kgg){
    22512274
    22522275        int i,j;
    … …  
    23452368/*}}}*/
    23462369/*FUNCTION Tria::CreatePVector {{{1*/
    2347 void  Tria::CreatePVector(Vec pg,int analysis_type,int sub_analysis_type){
    2348        
     2370void  Tria::CreatePVector(Vec pg){
     2371
     2372        int analysis_type,sub_analysis_type;
     2373
     2374        /*retrive parameters: */
     2375        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     2376        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
     2377
     2378        /*asserts: {{{*/
    23492379        /*if debugging mode, check that all pointers exist*/
    23502380        ISSMASSERT(this->nodes && this->matice && this->matpar && this->parameters && this->inputs);
     2381        /*}}}*/
    23512382
    23522383        /*Just branch to the correct load generator, according to the type of analysis we are carrying out: */
    23532384        if (analysis_type==ControlAnalysisEnum){
    2354                 CreatePVectorDiagnosticHoriz( pg,analysis_type,sub_analysis_type);
     2385                CreatePVectorDiagnosticHoriz( pg);
    23552386        }
    23562387        else if (analysis_type==DiagnosticAnalysisEnum){
    23572388                if (sub_analysis_type==HorizAnalysisEnum){
    2358                         CreatePVectorDiagnosticHoriz( pg,analysis_type,sub_analysis_type);
     2389                        CreatePVectorDiagnosticHoriz( pg);
    23592390                }
    23602391                else if (sub_analysis_type==HutterAnalysisEnum){
    2361                         CreatePVectorDiagnosticHutter( pg,analysis_type,sub_analysis_type);
     2392                        CreatePVectorDiagnosticHutter( pg);
    23622393                }
    23632394                else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
    23642395        }
    23652396        else if (analysis_type==SlopeComputeAnalysisEnum){
    2366                 CreatePVectorSlopeCompute( pg,analysis_type,sub_analysis_type);
     2397                CreatePVectorSlopeCompute( pg);
    23672398        }
    23682399        else if (analysis_type==PrognosticAnalysisEnum){
    2369                 CreatePVectorPrognostic( pg,analysis_type,sub_analysis_type);
     2400                CreatePVectorPrognostic( pg);
    23702401        }
    23712402        else if (analysis_type==Prognostic2AnalysisEnum){
    2372                 CreatePVectorPrognostic2( pg,analysis_type,sub_analysis_type);
     2403                CreatePVectorPrognostic2( pg);
    23732404        }
    23742405        else if (analysis_type==BalancedthicknessAnalysisEnum){
    2375                 CreatePVectorBalancedthickness( pg,analysis_type,sub_analysis_type);
     2406                CreatePVectorBalancedthickness( pg);
    23762407        }
    23772408        else if (analysis_type==Balancedthickness2AnalysisEnum){
    2378                 CreatePVectorBalancedthickness2( pg,analysis_type,sub_analysis_type);
     2409                CreatePVectorBalancedthickness2( pg);
    23792410        }
    23802411        else if (analysis_type==BalancedvelocitiesAnalysisEnum){
    2381                 CreatePVectorBalancedvelocities( pg,analysis_type,sub_analysis_type);
     2412                CreatePVectorBalancedvelocities( pg);
    23822413        }
    23832414        else{
    … …  
    23882419/*}}}*/
    23892420/*FUNCTION Tria::CreatePVectorBalancedthickness {{{1*/
    2390 void  Tria::CreatePVectorBalancedthickness(Vec pg ,int analysis_type,int sub_analysis_type){
     2421void  Tria::CreatePVectorBalancedthickness(Vec pg ){
    23912422
    23922423
    … …  
    24622493/*}}}*/
    24632494/*FUNCTION Tria::CreatePVectorBalancedthickness2 {{{1*/
    2464 void  Tria::CreatePVectorBalancedthickness2(Vec pg ,int analysis_type,int sub_analysis_type){
     2495void  Tria::CreatePVectorBalancedthickness2(Vec pg){
    24652496
    24662497
    … …  
    25382569/*}}}*/
    25392570/*FUNCTION Tria::CreatePVectorBalancedvelocities {{{1*/
    2540 void  Tria::CreatePVectorBalancedvelocities(Vec pg ,int analysis_type,int sub_analysis_type){
     2571void  Tria::CreatePVectorBalancedvelocities(Vec pg){
    25412572
    25422573
    … …  
    26122643/*}}}*/
    26132644/*FUNCTION Tria::CreatePVectorDiagnosticBaseVert {{{1*/
    2614 void  Tria::CreatePVectorDiagnosticBaseVert(Vec pg,int analysis_type,int sub_analysis_type){
     2645void  Tria::CreatePVectorDiagnosticBaseVert(Vec pg){
    26152646
    26162647        int             i,j;
    … …  
    27102741/*}}}*/
    27112742/*FUNCTION Tria::CreatePVectorDiagnosticHoriz {{{1*/
    2712 void Tria::CreatePVectorDiagnosticHoriz( Vec pg,  int analysis_type,int sub_analysis_type){
     2743void Tria::CreatePVectorDiagnosticHoriz( Vec pg){
    27132744
    27142745        int             i,j;
    … …  
    28282859/*}}}*/
    28292860/*FUNCTION Tria::CreatePVectorDiagnosticHutter{{{1*/
    2830 void  Tria::CreatePVectorDiagnosticHutter(Vec pg,int analysis_type,int sub_analysis_type){
     2861void  Tria::CreatePVectorDiagnosticHutter(Vec pg){
    28312862
    28322863        /*Collapsed formulation: */
    … …  
    28462877        for(i=0;i<3;i++){
    28472878                sing=(Sing*)SpawnSing(i);
    2848                 sing->CreatePVector(pg,analysis_type,sub_analysis_type);
     2879                sing->CreatePVector(pg);
    28492880        }
    28502881
    … …  
    28552886/*}}}*/
    28562887/*FUNCTION Tria::CreatePVectorPrognostic {{{1*/
    2857 void  Tria::CreatePVectorPrognostic(Vec pg ,int analysis_type,int sub_analysis_type){
     2888void  Tria::CreatePVectorPrognostic(Vec pg){
    28582889
    28592890
    … …  
    29372968/*}}}*/
    29382969/*FUNCTION Tria::CreatePVectorPrognostic2 {{{1*/
    2939 void  Tria::CreatePVectorPrognostic2(Vec pg ,int analysis_type,int sub_analysis_type){
     2970void  Tria::CreatePVectorPrognostic2(Vec pg){
    29402971
    29412972        /* local declarations */
    … …  
    30173048/*FUNCTION Tria::CreatePVectorSlopeCompute {{{1*/
    30183049
    3019 void Tria::CreatePVectorSlopeCompute( Vec pg,  int analysis_type,int sub_analysis_type){
     3050void Tria::CreatePVectorSlopeCompute( Vec pg){
    30203051
    30213052        int             i,j;
    … …  
    30483079        double  pe_g_gaussian[numdof];
    30493080        double  slope[2];
     3081        int sub_analysis_type;
     3082
     3083        /*retrive parameters: */
     3084        parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
    30503085
    30513086        /* Get node coordinates and dof list: */
    … …  
    31043139/*}}}*/
    31053140/*FUNCTION Tria::CreatePVectorThermalShelf {{{1*/
    3106 void Tria::CreatePVectorThermalShelf( Vec pg,  int analysis_type,int sub_analysis_type){
     3141void Tria::CreatePVectorThermalShelf( Vec pg){
    31073142
    31083143        int i,found;
    … …  
    32053240/*}}}*/
    32063241/*FUNCTION Tria::CreatePVectorThermalSheet {{{1*/
    3207 void Tria::CreatePVectorThermalSheet( Vec pg,  int analysis_type,int sub_analysis_type){
     3242void Tria::CreatePVectorThermalSheet( Vec pg){
    32083243
    32093244        int i,found;
    … …  
    32433278        double  l1l2l3[numgrids];
    32443279        double  scalar;
     3280
     3281        int analysis_type;
     3282
     3283        /*retrive parameters: */
     3284        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
    32453285
    32463286       
    … …  
    33093349/*}}}*/
    33103350/*FUNCTION Tria::Du {{{1*/
    3311 void Tria::Du(Vec du_g,int analysis_type,int sub_analysis_type){
     3351void Tria::Du(Vec du_g){
    33123352
    33133353        int i;
    … …  
    40854125/*}}}*/
    40864126/*FUNCTION Tria::Gradj {{{1*/
    4087 void  Tria::Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type){
     4127void  Tria::Gradj(Vec grad_g,int control_type){
    40884128
    40894129        /*inputs: */
    … …  
    40974137
    40984138        if (control_type==DragCoefficientEnum){
    4099                 GradjDrag( grad_g,analysis_type,sub_analysis_type);
     4139                GradjDrag( grad_g);
    41004140        }
    41014141        else if (control_type==RheologyBEnum){
    4102                 GradjB( grad_g,analysis_type,sub_analysis_type);
     4142                GradjB( grad_g);
    41034143        }
    41044144        else ISSMERROR("%s%i","control type not supported yet: ",control_type);
    … …  
    41064146/*}}}*/
    41074147/*FUNCTION Tria::GradjB{{{1*/
    4108 void  Tria::GradjB(Vec grad_g,int analysis_type,int sub_analysis_type){
     4148void  Tria::GradjB(Vec grad_g){
    41094149
    41104150        int i;
    … …  
    42524292/*}}}*/
    42534293/*FUNCTION Tria::GradjDrag {{{1*/
    4254 void  Tria::GradjDrag(Vec grad_g,int analysis_type,int sub_analysis_type){
     4294void  Tria::GradjDrag(Vec grad_g){
    42554295
    42564296
    … …  
    43114351        double  cm_maxdmp_slope;
    43124352
     4353        int analysis_type;
     4354
     4355        /*retrive parameters: */
     4356        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     4357
    43134358        /*retrieve inputs :*/
    43144359        inputs->GetParameterValue(&shelf,ElementOnIceShelfEnum);
    … …  
    44084453/*}}}*/
    44094454/*FUNCTION Tria::GradjDragStokes {{{1*/
    4410 void  Tria::GradjDragStokes(Vec grad_g,int analysis_type,int sub_analysis_type){
     4455void  Tria::GradjDragStokes(Vec grad_g){
    44114456
    44124457        int i;
    … …  
    44664511        double  cm_maxdmp_slope;
    44674512
     4513        int analysis_type;
     4514
     4515        /*retrive parameters: */
     4516        parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     4517
    44684518        /*retrieve inputs :*/
    44694519        inputs->GetParameterValue(&shelf,ElementOnIceShelfEnum);
    … …  
    45734623/*}}}*/
    45744624/*FUNCTION Tria::MassFlux {{{1*/
    4575 double Tria::MassFlux( double* segment,double* ug){
     4625double Tria::MassFlux( double* segment){
    45764626
    45774627        int i;
    … …  
    45814631        int          numberofdofspernode;
    45824632        double mass_flux=0;
    4583         int    doflist[numgrids*numdofs];
    4584         double vx_list[3];
    4585         double vy_list[3];
    45864633        double xyz_list[numgrids][3];
    45874634        double gauss_1[3];
    … …  
    46064653        GetVerticesCoordinates(&xyz_list[0][0], nodes, numgrids);
    46074654
    4608         /*recover velocity at three element nodes: */
    4609         this->GetDofList(&doflist[0],&numberofdofspernode);
    4610         for(i=0;i<3;i++){
    4611                 vx_list[i]=ug[doflist[numberofdofspernode*i+0]];
    4612                 vy_list[i]=ug[doflist[numberofdofspernode*i+1]];
    4613         }
    4614 
    46154655        /*get area coordinates of 0 and 1 locations: */
    46164656        for(i=0;i<3;i++){
    … …  
    46424682/*}}}*/
    46434683/*FUNCTION Tria::Misfit {{{1*/
    4644 double Tria::Misfit(int analysis_type,int sub_analysis_type){
     4684double Tria::Misfit(void){
    46454685
    46464686        int i;
    … …  
    48734913/*}}}*/
    48744914/*FUNCTION Tria::SurfaceArea {{{1*/
    4875 double Tria::SurfaceArea(int analysis_type,int sub_analysis_type){
     4915double Tria::SurfaceArea(void){
    48764916
    48774917        int i;
    … …  
    50635103void  Tria::MinVel(double* pminvel, bool process_units){
    50645104
     5105        int i;
     5106        int dim;
    50655107        const int numgrids=3;
    50665108        double  gaussgrids[numgrids][3]={{1,0,0},{0,1,0},{0,0,1}};
    … …  
    50815123        /*now, compute minimum of velocity :*/
    50825124        if(dim==2){
    5083                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
     5125                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
    50845126        }
    50855127        else{
    5086                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
     5128                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
    50875129        }
    50885130
    … …  
    51015143void  Tria::MaxVel(double* pmaxvel, bool process_units){
    51025144
     5145        int i;
     5146        int dim;
    51035147        const int numgrids=3;
    51045148        double  gaussgrids[numgrids][3]={{1,0,0},{0,1,0},{0,0,1}};
    … …  
    51195163        /*now, compute maximum of velocity :*/
    51205164        if(dim==2){
    5121                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
     5165                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2));
    51225166        }
    51235167        else{
    5124                 for(i=0;i<numgrids;i++)vel_values=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
     5168                for(i=0;i<numgrids;i++)vel_values[i]=sqrt(pow(vx_values[i],2)+pow(vy_values[i],2)+pow(vz_values[i],2));
    51255169        }
    51265170
    … …  
    51365180}
    51375181/*}}}*/
     5182/*FUNCTION Tria::MinVx(double* pminvx, bool process_units);{{{1*/
     5183void  Tria::MinVx(double* pminvx, bool process_units){
     5184
     5185        int i;
     5186        int dim;
     5187        const int numgrids=3;
     5188        double  gaussgrids[numgrids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};
     5189        double  vx_values[numgrids];
     5190        double  minvx;
     5191
     5192        /*retrieve dim parameter: */
     5193        parameters->FindParam(&dim,DimEnum);
     5194
     5195        /*retrive velocity values at nodes */
     5196        inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numgrids,VxEnum);
     5197
     5198        /*now, compute minimum:*/
     5199        minvx=vx_values[0];
     5200        for(i=1;i<numgrids;i++){
     5201                if (vx_values[i]<minvx)minvx=vx_values[i];
     5202        }
     5203
     5204        /*Assign output pointers:*/
     5205        *pminvx=minvx;
     5206
     5207}
     5208/*}}}*/
     5209/*FUNCTION Tria::MaxVx(double* pmaxvx, bool process_units);{{{1*/
     5210void  Tria::MaxVx(double* pmaxvx, bool process_units){
     5211
     5212        int i;
     5213        int dim;
     5214        const int numgrids=3;
     5215        double  gaussgrids[numgrids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};
     5216        double  vx_values[numgrids];
     5217        double  maxvx;
     5218
     5219        /*retrieve dim parameter: */
     5220        parameters->FindParam(&dim,DimEnum);
     5221
     5222        /*retrive velocity values at nodes */
     5223        inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numgrids,VxEnum);
     5224
     5225        /*now, compute maximum:*/
     5226        maxvx=vx_values[0];
     5227        for(i=1;i<numgrids;i++){
     5228                if (vx_values[i]>maxvx)maxvx=vx_values[i];
     5229        }
     5230
     5231        /*Assign output pointers:*/
     5232        *pmaxvx=maxvx;
     5233
     5234}
     5235/*}}}*/
     5236/*FUNCTION Tria::MaxAbsVx(double* pmaxabsvx, bool process_units);{{{1*/
     5237void  Tria::MaxAbsVx(double* pmaxabsvx, bool process_units){
     5238
     5239        int i;
     5240        int dim;
     5241        const int numgrids=3;
     5242        double  gaussgrids[numgrids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};
     5243        double  vx_values[numgrids];
     5244        double  maxabsvx;
     5245
     5246        /*retrieve dim parameter: */
     5247        parameters->FindParam(&dim,DimEnum);
     5248
     5249        /*retrive velocity values at nodes */
     5250        inputs->GetParameterValues(&vx_values[0],&gaussgrids[0][0],numgrids,VxEnum);
     5251
     5252        /*now, compute maximum:*/
     5253        maxabsvx=fabs(vx_values[0]);
     5254        for(i=1;i<numgrids;i++){
     5255                if (fabs(vx_values[i])>maxabsvx)maxabsvx=fabs(vx_values[i]);
     5256        }
     5257
     5258        /*Assign output pointers:*/
     5259        *pmaxabsvx=maxabsvx;
     5260}
     5261/*}}}*/
     5262/*FUNCTION Tria::MinVy(double* pminvy, bool process_units);{{{1*/
     5263void  Tria::MinVy(double* pminvy, bool process_units){
     5264
     5265        int i;
     5266        int dim;
     5267        const int numgrids=3;
     5268        double  gaussgrids[numgrids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};
     5269        double  vy_values[numgrids];
     5270        double  minvy;
     5271
     5272        /*retrieve dim parameter: */
     5273        parameters->FindParam(&dim,DimEnum);
     5274
     5275        /*retrive velocity values at nodes */
     5276        inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numgrids,VyEnum);
     5277
     5278        /*now, compute minimum:*/
     5279        minvy=vy_values[0];
     5280        for(i=1;i<numgrids;i++){
     5281                if (vy_values[i]<minvy)minvy=vy_values[i];
     5282        }
     5283
     5284        /*Assign output pointers:*/
     5285        *pminvy=minvy;
     5286
     5287}
     5288/*}}}*/
     5289/*FUNCTION Tria::MaxVy(double* pmaxvy, bool process_units);{{{1*/
     5290void  Tria::MaxVy(double* pmaxvy, bool process_units){
     5291
     5292        int i;
     5293        int dim;
     5294        const int numgrids=3;
     5295        double  gaussgrids[numgrids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};
     5296        double  vy_values[numgrids];
     5297        double  maxvy;
     5298
     5299        /*retrieve dim parameter: */
     5300        parameters->FindParam(&dim,DimEnum);
     5301
     5302        /*retrive velocity values at nodes */
     5303        inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numgrids,VyEnum);
     5304
     5305        /*now, compute maximum:*/
     5306        maxvy=vy_values[0];
     5307        for(i=1;i<numgrids;i++){
     5308                if (vy_values[i]>maxvy)maxvy=vy_values[i];
     5309        }
     5310
     5311        /*Assign output pointers:*/
     5312        *pmaxvy=maxvy;
     5313
     5314}
     5315/*}}}*/
     5316/*FUNCTION Tria::MaxAbsVy(double* pmaxabsvy, bool process_units);{{{1*/
     5317void  Tria::MaxAbsVy(double* pmaxabsvy, bool process_units){
     5318
     5319        int i;
     5320        int dim;
     5321        const int numgrids=3;
     5322        double  gaussgrids[numgrids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};
     5323        double  vy_values[numgrids];
     5324        double  maxabsvy;
     5325
     5326        /*retrieve dim parameter: */
     5327        parameters->FindParam(&dim,DimEnum);
     5328
     5329        /*retrive velocity values at nodes */
     5330        inputs->GetParameterValues(&vy_values[0],&gaussgrids[0][0],numgrids,VyEnum);
     5331
     5332        /*now, compute maximum:*/
     5333        maxabsvy=fabs(vy_values[0]);
     5334        for(i=1;i<numgrids;i++){
     5335                if (fabs(vy_values[i])>maxabsvy)maxabsvy=fabs(vy_values[i]);
     5336        }
     5337
     5338        /*Assign output pointers:*/
     5339        *pmaxabsvy=maxabsvy;
     5340}
     5341/*}}}*/
     5342/*FUNCTION Tria::MinVz(double* pminvz, bool process_units);{{{1*/
     5343void  Tria::MinVz(double* pminvz, bool process_units){
     5344
     5345        int i;
     5346        int dim;
     5347        const int numgrids=3;
     5348        double  gaussgrids[numgrids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};
     5349        double  vz_values[numgrids];
     5350        double  minvz;
     5351
     5352        /*retrieve dim parameter: */
     5353        parameters->FindParam(&dim,DimEnum);
     5354
     5355        /*retrive velocity values at nodes */
     5356        inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numgrids,VzEnum);
     5357
     5358        /*now, compute minimum:*/
     5359        minvz=vz_values[0];
     5360        for(i=1;i<numgrids;i++){
     5361                if (vz_values[i]<minvz)minvz=vz_values[i];
     5362        }
     5363
     5364        /*Assign output pointers:*/
     5365        *pminvz=minvz;
     5366
     5367}
     5368/*}}}*/
     5369/*FUNCTION Tria::MaxVz(double* pmaxvz, bool process_units);{{{1*/
     5370void  Tria::MaxVz(double* pmaxvz, bool process_units){
     5371
     5372        int i;
     5373        int dim;
     5374        const int numgrids=3;
     5375        double  gaussgrids[numgrids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};
     5376        double  vz_values[numgrids];
     5377        double  maxvz;
     5378
     5379        /*retrieve dim parameter: */
     5380        parameters->FindParam(&dim,DimEnum);
     5381
     5382        /*retrive velocity values at nodes */
     5383        inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numgrids,VzEnum);
     5384
     5385        /*now, compute maximum:*/
     5386        maxvz=vz_values[0];
     5387        for(i=1;i<numgrids;i++){
     5388                if (vz_values[i]>maxvz)maxvz=vz_values[i];
     5389        }
     5390
     5391        /*Assign output pointers:*/
     5392        *pmaxvz=maxvz;
     5393
     5394}
     5395/*}}}*/
     5396/*FUNCTION Tria::MaxAbsVz(double* pmaxabsvz, bool process_units);{{{1*/
     5397void  Tria::MaxAbsVz(double* pmaxabsvz, bool process_units){
     5398
     5399        int i;
     5400        int dim;
     5401        const int numgrids=3;
     5402        double  gaussgrids[numgrids][numgrids]={{1,0,0},{0,1,0},{0,0,1}};
     5403        double  vz_values[numgrids];
     5404        double  maxabsvz;
     5405
     5406        /*retrieve dim parameter: */
     5407        parameters->FindParam(&dim,DimEnum);
     5408
     5409        /*retrive velocity values at nodes */
     5410        inputs->GetParameterValues(&vz_values[0],&gaussgrids[0][0],numgrids,VzEnum);
     5411
     5412        /*now, compute maximum:*/
     5413        maxabsvz=fabs(vz_values[0]);
     5414        for(i=1;i<numgrids;i++){
     5415                if (fabs(vz_values[i])>maxabsvz)maxabsvz=fabs(vz_values[i]);
     5416        }
     5417
     5418        /*Assign output pointers:*/
     5419        *pmaxabsvz=maxabsvz;
     5420}
     5421/*}}}*/
     5422/*FUNCTION Tria::ReinitializeInput(int reinitialized_enum,int original_enum){{{1*/
     5423void  Tria::ReinitializeInput(int reinitialized_enum,int original_enum){
     5424
     5425        Input* original=NULL;
     5426        Input* copy=NULL;
     5427
     5428        /*Make a copy of the original input: */
     5429        original=(Input*)this->inputs->GetInput(original_enum);
     5430        copy=(Input*)original->copy();
     5431
     5432        /*Change copy enum to reinitialized_enum: */
     5433        copy->ChangeEnum(reinitialized_enum);
     5434
     5435        /*Add copy into inputs, it will wipe off the one already there: */
     5436        inputs->AddObject((Input*)copy);
     5437}
     5438/*}}}*/
  • issm/trunk/src/c/objects/Elements/Tria.h

    r4042 r4043  
    4545                void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
    4646                Object* copy();
    47                 void  DeepEcho();
     47                void  DeepEcho(void);
    4848                void  Demarshall(char** pmarshalled_dataset);
    49                 void  Echo();
    50                 int   Enum();
    51                 int   Id();
     49                void  Echo(void);
     50                int   Enum(void);
     51                int   Id(void);
    5252                bool  IsInput(int name);
    5353                void  Marshall(char** pmarshalled_dataset);
    54                 int   MarshallSize();
    55                 int   MyRank();
     54                int   MarshallSize(void);
     55                int   MyRank(void);
    5656                void  SetClone(int* minranks);
    5757                void  DepthAverageInputAtBase(int enum_type);
    … …  
    6262                /*}}}*/
    6363                /*FUNCTION element numerical routines {{{1*/
    64                 void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
    65                 void  CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type);
    66                 void  GetSolutionFromInputs(Vec solution,  int analysis_type,int sub_analysis_type);
    67                 void  GetSolutionFromInputsDiagnosticHoriz(Vec solution,int analysis_type,int sub_analysis_type);
     64                void  CreateKMatrix(Mat Kgg);
     65                void  CreatePVector(Vec pg);
     66                void  GetSolutionFromInputs(Vec solution);
     67                void  GetSolutionFromInputsDiagnosticHoriz(Vec solution);
    6868                void  GetDofList(int* doflist,int* pnumberofdofs);
    6969                void  GetDofList1(int* doflist);
    70                 void  CreateKMatrixDiagnosticHutter(Mat Kgg,int analysis_type,int sub_analysis_type);
    71                 void  CreateKMatrixDiagnosticHoriz(Mat Kgg,int analysis_type,int sub_analysis_type);
    72                 void  CreateKMatrixDiagnosticHorizFriction(Mat Kgg,int analysis_type,int sub_analysis_type);
    73                 void  CreateKMatrixDiagnosticSurfaceVert(Mat Kgg,int analysis_type,int sub_analysis_type);
    74                 void  CreateKMatrixSlopeCompute(Mat Kgg,int analysis_type,int sub_analysis_type);
     70                void  CreateKMatrixDiagnosticHutter(Mat Kgg);
     71                void  CreateKMatrixDiagnosticHoriz(Mat Kgg);
     72                void  CreateKMatrixDiagnosticHorizFriction(Mat Kgg);
     73                void  CreateKMatrixDiagnosticSurfaceVert(Mat Kgg);
     74                void  CreateKMatrixSlopeCompute(Mat Kgg);
    7575                void  GetParameterValue(double* pp, double* plist, double* gauss_l1l2l3);
    7676                void  GetParameterDerivativeValue(double* p, double* plist,double* xyz_list, double* gauss_l1l2l3);
    … …  
    8787                void  GetJacobianInvert(double*  Jinv, double* xyz_list,double* gauss_l1l2l3);
    8888                void  GetJacobian(double* J, double* xyz_list,double* gauss_l1l2l3);
    89                 void  Du(Vec du_g,int analysis_type,int sub_analysis_type);
    90                 void  Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type);
    91                 void  GradjDrag(Vec grad_g,int analysis_type,int sub_analysis_type);
    92                 void  GradjDragStokes(Vec grad_g,int analysis_type,int sub_analysis_type);
     89                void  Du(Vec du_g);
     90                void  Gradj(Vec grad_g,int control_type);
     91                void  GradjDrag(Vec grad_g);
     92                void  GradjDragStokes(Vec grad_g);
    9393                void  SurfaceNormal(double* surface_normal, double xyz_list[3][3]);
    94                 void  GradjB(Vec grad_g,int analysis_type,int sub_analysis_type);
    95                 double Misfit(int analysis_type,int sub_analysis_type);
    96                 double SurfaceArea(int analysis_type,int sub_analysis_type);
    97                 double CostFunction(int analysis_type,int sub_analysis_type);
    98                 void  CreatePVectorDiagnosticHutter(Vec pg,int analysis_type,int sub_analysis_type);
    99                 void  CreatePVectorDiagnosticHoriz(Vec pg,int analysis_type,int sub_analysis_type);
    100                 void  CreatePVectorDiagnosticBaseVert(Vec pg,int analysis_type,int sub_analysis_type);
    101                 void  CreatePVectorSlopeCompute( Vec pg,  int analysis_type,int sub_analysis_type);
    102                 void* GetMatPar();
    103                 bool  GetShelf();
     94                void  GradjB(Vec grad_g);
     95                double Misfit(void);
     96                double SurfaceArea(void);
     97                double CostFunction(void);
     98                void  CreatePVectorDiagnosticHutter(Vec pg);
     99                void  CreatePVectorDiagnosticHoriz(Vec pg);
     100                void  CreatePVectorDiagnosticBaseVert(Vec pg);
     101                void  CreatePVectorSlopeCompute( Vec pg);
     102                void* GetMatPar(void);
     103                bool  GetShelf(void);
    104104                void  GetNodes(void** nodes);
    105                 bool  GetOnBed();
     105                bool  GetOnBed(void);
    106106                void  GetThicknessList(double* thickness_list);
    107107                void  GetBedList(double* bed_list);
    108                 void  ComputeBasalStress(Vec sigma_b,int analysis_type,int sub_analysis_type);
    109                 void  ComputePressure(Vec p_g,int analysis_type,int sub_analysis_type);
    110                 void  ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type);
    111                 void  CreateKMatrixThermal(Mat Kgg,int analysis_type,int sub_analysis_type);
    112                 void  CreateKMatrixMelting(Mat Kgg,int analysis_type,int sub_analysis_type);
    113                 void  CreatePVectorThermalShelf( Vec pg,  int analysis_type,int sub_analysis_type);
    114                 void  CreatePVectorThermalSheet( Vec pg,  int analysis_type,int sub_analysis_type);
    115                 void  CreateKMatrixPrognostic(Mat Kgg,int analysis_type,int sub_analysis_type);
    116                 void  CreatePVectorPrognostic(Vec pg,int analysis_type,int sub_analysis_type);
    117                 void  CreateKMatrixPrognostic2(Mat Kgg,int analysis_type,int sub_analysis_type);
    118                 void  CreatePVectorPrognostic2(Vec pg,int analysis_type,int sub_analysis_type);
    119                 void  CreateKMatrixBalancedthickness(Mat Kgg,int analysis_type,int sub_analysis_type);
    120                 void  CreatePVectorBalancedthickness(Vec pg,int analysis_type,int sub_analysis_type);
    121                 void  CreateKMatrixBalancedthickness2(Mat Kgg,int analysis_type,int sub_analysis_type);
    122                 void  CreatePVectorBalancedthickness2(Vec pg,int analysis_type,int sub_analysis_type);
    123                 void  CreateKMatrixBalancedvelocities(Mat Kgg,int analysis_type,int sub_analysis_type);
    124                 void  CreatePVectorBalancedvelocities(Vec pg,int analysis_type,int sub_analysis_type);
    125                 double MassFlux(double* segment,double* ug);
     108                void  ComputeBasalStress(Vec sigma_b);
     109                void  ComputePressure(Vec p_g);
     110                void  ComputeStrainRate(Vec eps);
     111                void  CreateKMatrixThermal(Mat Kgg);
     112                void  CreateKMatrixMelting(Mat Kgg);
     113                void  CreatePVectorThermalShelf( Vec pg);
     114                void  CreatePVectorThermalSheet( Vec pg);
     115                void  CreateKMatrixPrognostic(Mat Kgg);
     116                void  CreatePVectorPrognostic(Vec pg);
     117                void  CreateKMatrixPrognostic2(Mat Kgg);
     118                void  CreatePVectorPrognostic2(Vec pg);
     119                void  CreateKMatrixBalancedthickness(Mat Kgg);
     120                void  CreatePVectorBalancedthickness(Vec pg);
     121                void  CreateKMatrixBalancedthickness2(Mat Kgg);
     122                void  CreatePVectorBalancedthickness2(Vec pg);
     123                void  CreateKMatrixBalancedvelocities(Mat Kgg);
     124                void  CreatePVectorBalancedvelocities(Vec pg);
     125                double MassFlux(double* segment);
    126126                double GetArea(void);
    127127                double GetAreaCoordinate(double x, double y, int which_one);
    … …  
    130130                void  MinVel(double* pminvel, bool process_units);
    131131                void  MaxVel(double* pmaxvel, bool process_units);
     132                void  MinVx(double* pminvx, bool process_units);
     133                void  MaxVx(double* pmaxvx, bool process_units);
     134                void  MaxAbsVx(double* pmaxabsvx, bool process_units);
     135                void  MinVy(double* pminvy, bool process_units);
     136                void  MaxVy(double* pmaxvy, bool process_units);
     137                void  MaxAbsVy(double* pmaxabsvy, bool process_units);
     138                void  MinVz(double* pminvz, bool process_units);
     139                void  MaxVz(double* pmaxvz, bool process_units);
     140                void  MaxAbsVz(double* pmaxabsvz, bool process_units);
     141                void  ReinitializeInput(int reinitialized_enum,int original_enum);
     142
    132143
    133144                /*}}}*/
    134145                /*FUNCTION updates{{{1*/
    135146                void  UpdateFromDakota(void* inputs);
    136                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
    137                 void  UpdateInputsFromSolutionDiagnosticHoriz( double* solution,int analysis_type,int sub_analysis_type);
    138                 void  UpdateInputsFromSolutionSlopeCompute( double* solution,int analysis_type,int sub_analysis_type);
    139                 void  UpdateInputsFromSolutionPrognostic( double* solution,int analysis_type,int sub_analysis_type);
    140                 void  UpdateInputsFromSolutionPrognostic2(double* solution,int analysis_type,int sub_analysis_type);
    141                 void  UpdateInputsFromSolutionBalancedthickness( double* solution,int analysis_type,int sub_analysis_type);
    142                 void  UpdateInputsFromSolutionBalancedthickness2( double* solution,int analysis_type,int sub_analysis_type);
    143                 void  UpdateInputsFromSolutionBalancedvelocities( double* solution,int analysis_type,int sub_analysis_type);
     147                void  UpdateInputsFromSolution(double* solutiong);
     148                void  UpdateInputsFromSolutionDiagnosticHoriz( double* solution);
     149                void  UpdateInputsFromSolutionSlopeCompute( double* solution);
     150                void  UpdateInputsFromSolutionPrognostic( double* solution);
     151                void  UpdateInputsFromSolutionPrognostic2(double* solution);
     152                void  UpdateInputsFromSolutionBalancedthickness( double* solution);
     153                void  UpdateInputsFromSolutionBalancedthickness2( double* solution);
     154                void  UpdateInputsFromSolutionBalancedvelocities( double* solution);
    144155                void  UpdateInputsFromVector(double* vector, int name, int type);
    145156                void  UpdateInputsFromVector(int* vector, int name, int type);
  • issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp

    r4042 r4043  
    239239
    240240        /*Process units if requested: */
    241         if(process)NodalValuesUnitConversion(&valuescopy[0],numnodes,enum_type,parameters);
     241        if(process_units)NodalValuesUnitConversion(&valuescopy[0],numnodes,enum_type,parameters);
    242242
    243243        /*Now, figure out minimum of valuescopy: */
  • issm/trunk/src/c/objects/Inputs/BeamVertexInput.h

    r4042 r4043  
    4343                void  UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    4444
    45                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     45                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    4646
    4747                Input* SpawnSingInput(int  index);
  • issm/trunk/src/c/objects/Inputs/BoolInput.h

    r4042 r4043  
    4343                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    4444
    45                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     45                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    4646
    4747                Input* SpawnSingInput(int  index);
  • issm/trunk/src/c/objects/Inputs/DoubleInput.h

    r4042 r4043  
    4444                void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
    4545                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    46                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     46                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    4747
    4848                Input* SpawnSingInput(int  index);
  • issm/trunk/src/c/objects/Inputs/IntInput.h

    r4042 r4043  
    4343                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    4444
    45                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     45                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    4646
    4747                Input* SpawnSingInput(int  index);
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp

    r4042 r4043  
    888888
    889889        /*Process units if requested: */
    890         if(process)NodalValuesUnitConversion(&valuescopy[0],numnodes,enum_type,parameters);
     890        if(process_units)NodalValuesUnitConversion(&valuescopy[0],numnodes,enum_type,parameters);
    891891
    892892        /*Now, figure out minimum of valuescopy: */
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.h

    r4042 r4043  
    4242                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    4343
    44                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     44                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    4545
    4646                Input* SpawnSingInput(int  index);
  • issm/trunk/src/c/objects/Inputs/SingVertexInput.cpp

    r4042 r4043  
    215215
    216216        /*Process units if requested: */
    217         if(process)NodalValuesUnitConversion(&valuecopy,1,enum_type,parameters);
     217        if(process_units)NodalValuesUnitConversion(&valuecopy,1,enum_type,parameters);
    218218
    219219        /*Now, return square of value, because it is the minimum: */
  • issm/trunk/src/c/objects/Inputs/SingVertexInput.h

    r4042 r4043  
    4242                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    4343
    44                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     44                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    4545
    4646                Input* SpawnSingInput(int  index);
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp

    r4042 r4043  
    462462
    463463        /*Process units if requested: */
    464         if(process)NodalValuesUnitConversion(&valuescopy[0],numnodes,enum_type,parameters);
     464        if(process_units)NodalValuesUnitConversion(&valuescopy[0],numnodes,enum_type,parameters);
    465465
    466466        /*Now, figure out minimum of valuescopy: */
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.h

    r4042 r4043  
    4242                void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
    4343                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    44                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     44                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    4545
    4646                Input* SpawnSingInput(int  index);
  • issm/trunk/src/c/objects/Loads/Icefront.cpp

    r4021 r4043  
    278278/*FUNCTION Icefront::CreateKMatrix {{{1*/
    279279
    280 void  Icefront::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){
     280void  Icefront::CreateKMatrix(Mat Kgg){
    281281
    282282        /*No stiffness loads applied, do nothing: */
    … …  
    287287/*}}}*/
    288288/*FUNCTION Icefront::CreatePVector {{{1*/
    289 void  Icefront::CreatePVector(Vec pg, int analysis_type,int sub_analysis_type){
     289void  Icefront::CreatePVector(Vec pg){
     290
     291        int analysis_type,sub_analysis_type;
     292
     293        /*Retrieve parameters: */
     294        this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     295        this->parameters->FindParam(&sub_analysis_type,SubAnalysisTypeEnum);
    290296
    291297        /*Just branch to the correct element icefront vector generator, according to the type of analysis we are carrying out: */
    292298        if (analysis_type==ControlAnalysisEnum){
    293299               
    294                 CreatePVectorDiagnosticHoriz( pg,analysis_type,sub_analysis_type);
     300                CreatePVectorDiagnosticHoriz( pg);
    295301
    296302        }
    … …  
    299305                if (sub_analysis_type==HorizAnalysisEnum){
    300306               
    301                         CreatePVectorDiagnosticHoriz( pg,analysis_type,sub_analysis_type);
     307                        CreatePVectorDiagnosticHoriz( pg);
    302308
    303309                }
    304310                else if (sub_analysis_type==StokesAnalysisEnum){
    305311                       
    306                         CreatePVectorDiagnosticStokes( pg,analysis_type,sub_analysis_type);
     312                        CreatePVectorDiagnosticStokes( pg);
    307313
    308314                }
    … …  
    316322/*}}}*/
    317323/*FUNCTION Icefront::CreatePVectorDiagnosticHoriz {{{1*/
    318 void Icefront::CreatePVectorDiagnosticHoriz( Vec pg,  int analysis_type,int sub_analysis_type){
     324void Icefront::CreatePVectorDiagnosticHoriz( Vec pg){
    319325       
    320326        int type;
    … …  
    323329        /*Branck on the type of icefront: */
    324330        if (type==SegmentIcefrontEnum){
    325                 CreatePVectorDiagnosticHorizSegment(pg,analysis_type,sub_analysis_type);
     331                CreatePVectorDiagnosticHorizSegment(pg);
    326332        }
    327333        else if (type==QuadIceFrontEnum){
    328                 CreatePVectorDiagnosticHorizQuad(pg,analysis_type,sub_analysis_type);
     334                CreatePVectorDiagnosticHorizQuad(pg);
    329335        }
    330336        else ISSMERROR("type %i not supported",type);
    … …  
    332338/*}}}*/
    333339/*FUNCTION Icefront::CreatePVectorDiagnosticHorizSegment{{{1*/
    334 void Icefront::CreatePVectorDiagnosticHorizSegment( Vec pg,int analysis_type,int sub_analysis_type){
     340void Icefront::CreatePVectorDiagnosticHorizSegment( Vec pg){
    335341
    336342        int i,j;
    … …  
    425431/*}}}*/
    426432/*FUNCTION Icefront::CreatePVectorDiagnosticHorizQuad {{{1*/
    427 void Icefront::CreatePVectorDiagnosticHorizQuad( Vec pg,int analysis_type,int sub_analysis_type){
     433void Icefront::CreatePVectorDiagnosticHorizQuad( Vec pg){
    428434
    429435        int i,j;
    … …  
    563569/*}}}*/
    564570/*FUNCTION Icefront::CreatePVectorDiagnosticStokes {{{1*/
    565 void Icefront::CreatePVectorDiagnosticStokes( Vec pg,int analysis_type,int sub_analysis_type){
     571void Icefront::CreatePVectorDiagnosticStokes( Vec pg){
    566572
    567573        int i,j;
    … …  
    699705}
    700706/*}}}*/
    701 /*FUNCTION Icefront::DistributeNumDofs {{{1*/
    702 void  Icefront::DistributeNumDofs(int* numdofspernode,int analysis_type,int sub_analysis_type){return;}
    703                
    704 /*}}}*/
    705707/*FUNCTION Icefront::GetDofList{{{1*/
    706708
    … …  
    740742/*}}}*/
    741743/*FUNCTION Icefront::PenaltyCreateKMatrix {{{1*/
    742 void  Icefront::PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type){
     744void  Icefront::PenaltyCreateKMatrix(Mat Kgg,double kmax){
    743745        /*do nothing: */
    744746}
    745747/*}}}*/
    746748/*FUNCTION Icefront::PenaltyCreatePVector{{{1*/
    747 void  Icefront::PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type){
     749void  Icefront::PenaltyCreatePVector(Vec pg,double kmax){
    748750        /*do nothing: */
    749751}
    … …  
    13741376}
    13751377/*}}}*/
    1376 /*FUNCTION Icefront::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type) {{{1*/
    1377 void  Icefront::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
     1378/*FUNCTION Icefront::UpdateInputsFromSolution(double* solution) {{{1*/
     1379void  Icefront::UpdateInputsFromSolution(double* solution){
    13781380        /*Nothing updated yet*/
    13791381}
  • issm/trunk/src/c/objects/Loads/Icefront.h

    r4007 r4043  
    5555                void  UpdateInputsFromConstant(int constant, int name);
    5656                void  UpdateInputsFromConstant(bool constant, int name);
    57                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
     57                void  UpdateInputsFromSolution(double* solution);
    5858                bool  InAnalysis(int analysis_type);
    5959                /*}}}*/
    6060                /*numerics: {{{1*/
    61                 void  DistributeNumDofs(int* numdofspernode,int analysis_type,int sub_analysis_type);
    62                 void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
    63                 void  CreatePVector(Vec pg, int analysis_type,int sub_analysis_type);
    64                 void  CreatePVectorDiagnosticHoriz( Vec pg,  int analysis_type,int sub_analysis_type);
    65                 void  CreatePVectorDiagnosticHorizSegment( Vec pg, int analysis_type,int sub_analysis_type);
    66                 void  CreatePVectorDiagnosticHorizQuad( Vec pg, int analysis_type,int sub_analysis_type);
    67                 void  CreatePVectorDiagnosticStokes( Vec pg, int analysis_type,int sub_analysis_type);
     61                void  CreateKMatrix(Mat Kgg);
     62                void  CreatePVector(Vec pg);
     63                void  CreatePVectorDiagnosticHoriz( Vec pg);
     64                void  CreatePVectorDiagnosticHorizSegment( Vec pg);
     65                void  CreatePVectorDiagnosticHorizQuad( Vec pg);
     66                void  CreatePVectorDiagnosticStokes( Vec pg);
    6867                void  GetDofList(int* doflist,int* pnumberofdofs);
    6968                void  SegmentPressureLoad(double* pe_g,double rho_water,double rho_ice,double gravity, double* thickness_list, double* bed_list, double* normal,double length);
    … …  
    7271                void  QuadPressureLoadStokes(double* pe_g,double rho_water,double rho_ice,double gravity, double* thickness_list, double* bed_list,
    7372                                              double* normal1,double* normal2,double* normal3,double* normal4,double* xyz_list);
    74                 void  PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type);
    75                 void  PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type);
     73                void  PenaltyCreateKMatrix(Mat Kgg,double kmax);
     74                void  PenaltyCreatePVector(Vec pg,double kmax);
    7675                /*}}}*/
    7776};
  • issm/trunk/src/c/objects/Loads/Load.h

    r4004 r4043  
    3030                virtual void  Demarshall(char** pmarshalled_dataset)=0;
    3131                virtual void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* vertices,DataSet* materials,Parameters* parameters)=0;
    32                 virtual void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type)=0;
    33                 virtual void  CreatePVector(Vec pg, int analysis_type,int sub_analysis_type)=0;
    34                 virtual void  PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type)=0;
    35                 virtual void  PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type)=0;
     32                virtual void  CreateKMatrix(Mat Kgg)=0;
     33                virtual void  CreatePVector(Vec pg)=0;
     34                virtual void  PenaltyCreateKMatrix(Mat Kgg,double kmax)=0;
     35                virtual void  PenaltyCreatePVector(Vec pg,double kmax)=0;
    3636                virtual bool  InAnalysis(int analysis_type);
    3737};
  • issm/trunk/src/c/objects/Loads/Numericalflux.cpp

    r4021 r4043  
    283283/*Object functions*/
    284284/*FUNCTION Numericalflux::CreateKMatrix {{{1*/
    285 void  Numericalflux::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){
     285void  Numericalflux::CreateKMatrix(Mat Kgg){
    286286
    287287        int type;
    … …  
    292292        if (type==InternalEnum){
    293293
    294                 CreateKMatrixInternal(Kgg,analysis_type,sub_analysis_type);
     294                CreateKMatrixInternal(Kgg);
    295295        }
    296296        else if (type==BoundaryEnum){
    297297
    298                 CreateKMatrixBoundary(Kgg,analysis_type,sub_analysis_type);
     298                CreateKMatrixBoundary(Kgg);
    299299        }
    300300        else ISSMERROR("type not supported yet");
    … …  
    303303/*}}}*/
    304304/*FUNCTION Numericalflux::CreateKMatrixInternal {{{1*/
    305 void  Numericalflux::CreateKMatrixInternal(Mat Kgg,int analysis_type,int sub_analysis_type){
     305void  Numericalflux::CreateKMatrixInternal(Mat Kgg){
    306306
    307307        /* local declarations */
    308308        int             i,j;
     309        int analysis_type,sub_analysis_type;
    309310
    310311        /* node data: */
    … …  
    342343        Node**  nodes=NULL;
    343344        Tria**  trias=NULL;
     345
     346        /*Retrieve parameters: */
     347        this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     348        this->parameters->FindParam(&sub_analysis_type,SubAnalysisTypeEnum);
    344349
    345350        /*recover objects from hooks: */
    … …  
    417422/*}}}*/
    418423/*FUNCTION Numericalflux::CreateKMatrixBoundary {{{1*/
    419 void  Numericalflux::CreateKMatrixBoundary(Mat Kgg,int analysis_type,int sub_analysis_type){
     424void  Numericalflux::CreateKMatrixBoundary(Mat Kgg){
    420425
    421426        /* local declarations */
    422427        int             i,j;
     428        int analysis_type,sub_analysis_type;
    423429
    424430        /* node data: */
    … …  
    458464        Tria**  trias=NULL;
    459465
     466        /*Retrieve parameters: */
     467        this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     468        this->parameters->FindParam(&sub_analysis_type,SubAnalysisTypeEnum);
     469
    460470        /*recover objects from hooks: */
    461471        nodes=(Node**)hnodes.deliverp();
    … …  
    534544/*}}}*/
    535545/*FUNCTION Numericalflux::CreatePVector {{{1*/
    536 void  Numericalflux::CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type){
     546void  Numericalflux::CreatePVector(Vec pg){
    537547
    538548        int type;
    … …  
    543553        if (type==InternalEnum){
    544554
    545                 CreatePVectorInternal(pg,analysis_type,sub_analysis_type);
     555                CreatePVectorInternal(pg);
    546556        }
    547557        else if (type==BoundaryEnum){
    548558
    549                 CreatePVectorBoundary(pg,analysis_type,sub_analysis_type);
     559                CreatePVectorBoundary(pg);
    550560        }
    551561        else ISSMERROR("type not supported yet");
    … …  
    554564/*}}}*/
    555565/*FUNCTION Numericalflux::CreatePVectorInternal{{{1*/
    556 void  Numericalflux::CreatePVectorInternal(Vec pg,int analysis_type,int sub_analysis_type){
     566void  Numericalflux::CreatePVectorInternal(Vec pg){
    557567
    558568        /*Nothing added to PVector*/
    … …  
    562572/*}}}*/
    563573/*FUNCTION Numericalflux::CreatePVectorBoundary{{{1*/
    564 void  Numericalflux::CreatePVectorBoundary(Vec pg,int analysis_type,int sub_analysis_type){
     574void  Numericalflux::CreatePVectorBoundary(Vec pg){
    565575
    566576        /* local declarations */
    567577        int             i,j;
     578        int analysis_type,sub_analysis_type;
    568579
    569580        /* node data: */
    … …  
    607618        trias=(Tria**)helements.deliverp();
    608619
     620        /*Retrieve parameters: */
     621        this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     622        this->parameters->FindParam(&sub_analysis_type,SubAnalysisTypeEnum);
     623
    609624        /*recover parameters: */
    610625        if (analysis_type==Prognostic2AnalysisEnum){
    … …  
    673688}
    674689/*}}}*/
    675 /*FUNCTION Numericalflux::DistributeNumDofs {{{1*/
    676 void  Numericalflux::DistributeNumDofs(int* numdofspernode,int analysis_type,int sub_analysis_type){
    677         return;
    678 }
    679690/*}}}*/
    680691/*FUNCTION Numericalflux::GetB {{{1*/
    … …  
    825836/*}}}*/
    826837/*FUNCTION Numericalflux::PenaltyCreateKMatrix {{{1*/
    827 void  Numericalflux::PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type){
     838void  Numericalflux::PenaltyCreateKMatrix(Mat Kgg,double kmax){
    828839
    829840        /*No stiffness loads applied, do nothing: */
    … …  
    833844/*}}}*/
    834845/*FUNCTION Numericalflux::PenaltyCreatePVector{{{1*/
    835 void  Numericalflux::PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type){
     846void  Numericalflux::PenaltyCreatePVector(Vec pg,double kmax){
    836847
    837848        /*No penalty loads applied, do nothing: */
  • issm/trunk/src/c/objects/Loads/Numericalflux.h

    r4007 r4043  
    5050                void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
    5151                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    52                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     52                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    5353                bool    InAnalysis(int analysis_type);
    5454
    … …  
    5757                void  GetJacobianDeterminant(double* pJdet,double xyz_list[4][3], double gauss_coord);
    5858                void  GetNodalFunctions(double* l1l4, double gauss_coord);
    59                 void  DistributeNumDofs(int* numdofspernode,int analysis_type,int sub_analysis_type);
    6059                void  GetB(double* B, double gauss_coord);
    6160                void  GetL(double* L, double gauss_coord,int numdof);
    … …  
    6564                void  UpdateFromInputs(void* inputs);
    6665               
    67                 void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
    68                 void  CreateKMatrixInternal(Mat Kgg,int analysis_type,int sub_analysis_type);
    69                 void  CreateKMatrixBoundary(Mat Kgg,int analysis_type,int sub_analysis_type);
    70                 void  CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type);
    71                 void  CreatePVectorInternal(Vec pg,int analysis_type,int sub_analysis_type);
    72                 void  CreatePVectorBoundary(Vec pg,int analysis_type,int sub_analysis_type);
    73                 void  PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type);
    74                 void  PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type);
     66                void  CreateKMatrix(Mat Kgg);
     67                void  CreateKMatrixInternal(Mat Kgg);
     68                void  CreateKMatrixBoundary(Mat Kgg);
     69                void  CreatePVector(Vec pg);
     70                void  CreatePVectorInternal(Vec pg);
     71                void  CreatePVectorBoundary(Vec pg);
     72                void  PenaltyCreateKMatrix(Mat Kgg,double kmax);
     73                void  PenaltyCreatePVector(Vec pg,double kmax);
    7574                /*}}}*/
    7675
  • issm/trunk/src/c/objects/Loads/Pengrid.cpp

    r4021 r4043  
    249249/*FUNCTION Pengrid::CreateKMatrix {{{1*/
    250250
    251 void  Pengrid::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){
     251void  Pengrid::CreateKMatrix(Mat Kgg){
    252252
    253253        /*No loads applied, do nothing: */
    … …  
    257257/*}}}1*/
    258258/*FUNCTION Pengrid::CreatePVector {{{1*/
    259 void  Pengrid::CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type){
     259void  Pengrid::CreatePVector(Vec pg){
    260260
    261261        /*No loads applied, do nothing: */
    … …  
    263263
    264264}
    265 /*}}}1*/
    266 /*FUNCTION Pengrid::DistributenumDofs {{{1*/
    267 void  Pengrid::DistributeNumDofs(int* numdofpernode,int analysis_type,int sub_analysis_type){return;}
    268265/*}}}1*/
    269266/*FUNCTION Pengrid::GetDofList {{{1*/
    … …  
    291288/*}}}*/
    292289/*FUNCTION Pengrid::PenaltyConstrain {{{1*/
    293 void  Pengrid::PenaltyConstrain(int* punstable,int analysis_type,int sub_analysis_type){
     290void  Pengrid::PenaltyConstrain(int* punstable){
     291
     292        int analysis_type,sub_analysis_type;
     293
     294        /*Retrieve parameters: */
     295        this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     296        this->parameters->FindParam(&sub_analysis_type,SubAnalysisTypeEnum);
    294297
    295298        if ((analysis_type==DiagnosticAnalysisEnum) && ((sub_analysis_type==StokesAnalysisEnum))){
    … …  
    301304        else if (analysis_type==ThermalAnalysisEnum){
    302305               
    303                 PenaltyConstrainThermal(punstable,analysis_type,sub_analysis_type);
     306                PenaltyConstrainThermal(punstable);
    304307               
    305308        }
    … …  
    317320/*}}}1*/
    318321/*FUNCTION Pengrid::PenaltyConstrainThermal {{{1*/
    319 void  Pengrid::PenaltyConstrainThermal(int* punstable,int analysis_type,int sub_analysis_type){
     322void  Pengrid::PenaltyConstrainThermal(int* punstable){
    320323
    321324        //   The penalty is stable if it doesn't change during to successive iterations.   
    … …  
    401404/*}}}1*/
    402405/*FUNCTION Pengrid::PenaltyCreateMatrix {{{1*/
    403 void  Pengrid::PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type){
     406void  Pengrid::PenaltyCreateKMatrix(Mat Kgg,double kmax){
     407
     408        int analysis_type,sub_analysis_type;
     409
     410        /*Retrieve parameters: */
     411        this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     412        this->parameters->FindParam(&sub_analysis_type,SubAnalysisTypeEnum);
    404413
    405414        if ((analysis_type==DiagnosticAnalysisEnum) && ((sub_analysis_type==StokesAnalysisEnum))){
    406415
    407                 PenaltyCreateKMatrixDiagnosticStokes( Kgg,kmax,analysis_type,sub_analysis_type);
     416                PenaltyCreateKMatrixDiagnosticStokes( Kgg,kmax);
    408417        }
    409418        else if (analysis_type==ThermalAnalysisEnum){
    410419               
    411                 PenaltyCreateKMatrixThermal( Kgg,kmax,analysis_type,sub_analysis_type);
     420                PenaltyCreateKMatrixThermal( Kgg,kmax);
    412421               
    413422        }
    414423        else if (analysis_type==MeltingAnalysisEnum){
    415424                       
    416                 PenaltyCreateKMatrixMelting( Kgg,kmax,analysis_type,sub_analysis_type);
     425                PenaltyCreateKMatrixMelting( Kgg,kmax);
    417426
    418427        }
    … …  
    424433/*}}}1*/
    425434/*FUNCTION Pengrid::PenaltyCreateKMatrixDiagnosticStokes {{{1*/
    426 void  Pengrid::PenaltyCreateKMatrixDiagnosticStokes(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type){
     435void  Pengrid::PenaltyCreateKMatrixDiagnosticStokes(Mat Kgg,double kmax){
    427436       
    428437        const int numgrids=1;
    … …  
    467476/*}}}1*/
    468477/*FUNCTION Pengrid::PenaltyCreateKMatrixMelting {{{1*/
    469 void  Pengrid::PenaltyCreateKMatrixMelting(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type){
     478void  Pengrid::PenaltyCreateKMatrixMelting(Mat Kgg,double kmax){
    470479
    471480        int found=0;
    … …  
    526535/*}}}1*/
    527536/*FUNCTION Pengrid::PenaltyCreateKMatrixThermal {{{1*/
    528 void  Pengrid::PenaltyCreateKMatrixThermal(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type){
     537void  Pengrid::PenaltyCreateKMatrixThermal(Mat Kgg,double kmax){
    529538
    530539        int found=0;
    … …  
    553562/*}}}1*/
    554563/*FUNCTION Pengrid::PenaltyCreatePVector {{{1*/
    555 void  Pengrid::PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type){
     564void  Pengrid::PenaltyCreatePVector(Vec pg,double kmax){
     565
     566        int analysis_type,sub_analysis_type;
     567
     568        /*Retrieve parameters: */
     569        this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
     570        this->parameters->FindParam(&sub_analysis_type,SubAnalysisTypeEnum);
    556571
    557572        if (analysis_type==ThermalAnalysisEnum){
    558573               
    559                 PenaltyCreatePVectorThermal( pg,kmax,analysis_type,sub_analysis_type);
     574                PenaltyCreatePVectorThermal( pg,kmax);
    560575               
    561576        }
    562577        else if (analysis_type==MeltingAnalysisEnum){
    563578                       
    564                 PenaltyCreatePVectorMelting( pg,kmax,analysis_type,sub_analysis_type);
     579                PenaltyCreatePVectorMelting( pg,kmax);
    565580
    566581        }
    … …  
    578593/*}}}1*/
    579594/*FUNCTION Pengrid::PenaltyCreatePVectorMelting {{{1*/
    580 void  Pengrid::PenaltyCreatePVectorMelting(Vec pg, double kmax,int analysis_type,int sub_analysis_type){
     595void  Pengrid::PenaltyCreatePVectorMelting(Vec pg, double kmax){
    581596       
    582597        const int numgrids=1;
    … …  
    654669/*}}}1*/
    655670/*FUNCTION Pengrid::PenaltyCreatePVectorThermal {{{1*/
    656 void  Pengrid::PenaltyCreatePVectorThermal(Vec pg,  double kmax,int analysis_type,int sub_analysis_type){
     671void  Pengrid::PenaltyCreatePVectorThermal(Vec pg,  double kmax){
    657672
    658673        const int numgrids=1;
    … …  
    714729/*}}}1*/
    715730/*FUNCTION Pengrid::UpdateInputs {{{1*/
    716 void  Pengrid::UpdateInputs(double* solution, int analysis_type, int sub_analysis_type){
     731void  Pengrid::UpdateInputs(double* solution){
    717732        ISSMERROR("not supported yet!");
    718733}
    … …  
    761776}
    762777/*}}}*/
    763 /*FUNCTION Pengrid::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type) {{{1*/
    764 void  Pengrid::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
     778/*FUNCTION Pengrid::UpdateInputsFromSolution(double* solution) {{{1*/
     779void  Pengrid::UpdateInputsFromSolution(double* solution){
    765780        /*Nothing updated yet*/
    766781}
  • issm/trunk/src/c/objects/Loads/Pengrid.h

    r4007 r4043  
    5656                void  UpdateInputsFromConstant(int constant, int name);
    5757                void  UpdateInputsFromConstant(bool constant, int name);
    58                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
     58                void  UpdateInputsFromSolution(double* solution);
    5959                bool  InAnalysis(int analysis_type);
    6060
    6161                /*}}}*/
    6262                /*FUNCTION element numerical routines {{{1*/
    63                 void  DistributeNumDofs(int* numdofspernode,int analysis_type,int sub_analysis_type);
    64                 void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
    65                 void  CreatePVector(Vec pg, int analysis_type,int sub_analysis_type);
    66                 void  PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type);
    67                 void  PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type);
    68                 void  PenaltyCreateKMatrixDiagnosticStokes(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type);
     63                void  CreateKMatrix(Mat Kgg);
     64                void  CreatePVector(Vec pg);
     65                void  PenaltyCreateKMatrix(Mat Kgg,double kmax);
     66                void  PenaltyCreatePVector(Vec pg,double kmax);
     67                void  PenaltyCreateKMatrixDiagnosticStokes(Mat Kgg,double kmax);
    6968                void  GetDofList(int* doflist,int* pnumberofdofspernode);
    70                 void  PenaltyCreateKMatrixThermal(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type);
    71                 void  PenaltyCreateKMatrixMelting(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type);
    72                 void  PenaltyCreatePVectorThermal(Vec pg, double kmax,int analysis_type,int sub_analysis_type);
    73                 void  PenaltyCreatePVectorMelting(Vec pg, double kmax,int analysis_type,int sub_analysis_type);
    74                 void  PenaltyConstrain(int* punstable,int analysis_type,int sub_analysis_type);
    75                 void  PenaltyConstrainThermal(int* punstable,int analysis_type,int sub_analysis_type);
     69                void  PenaltyCreateKMatrixThermal(Mat Kgg,double kmax);
     70                void  PenaltyCreateKMatrixMelting(Mat Kgg,double kmax);
     71                void  PenaltyCreatePVectorThermal(Vec pg, double kmax);
     72                void  PenaltyCreatePVectorMelting(Vec pg, double kmax);
     73                void  PenaltyConstrain(int* punstable);
     74                void  PenaltyConstrainThermal(int* punstable);
    7675               
    7776                /*updates:*/
    7877                void  UpdateFromDakota(void* inputs);
    79                 void  UpdateInputs(double* solution, int analysis_type, int sub_analysis_type);
     78                void  UpdateInputs(double* solution);
    8079                /*}}}*/
    8180
  • issm/trunk/src/c/objects/Loads/Penpair.cpp

    r4021 r4043  
    181181/*FUNCTION Penpair::CreateKMatrix {{{1*/
    182182
    183 void  Penpair::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){
     183void  Penpair::CreateKMatrix(Mat Kgg){
    184184
    185185        /*No loads applied, do nothing: */
    … …  
    189189/*}}}1*/
    190190/*FUNCTION Penpair::CreatePVector {{{1*/
    191 void  Penpair::CreatePVector(Vec pg, int analysis_type,int sub_analysis_type){
     191void  Penpair::CreatePVector(Vec pg){
    192192
    193193        /*No loads applied, do nothing: */
    … …  
    197197/*}}}1*/
    198198/*FUNCTION Penpair::PenaltyCreateKMatrix {{{1*/
    199 void  Penpair::PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type){
     199void  Penpair::PenaltyCreateKMatrix(Mat Kgg,double kmax){
    200200       
    201201        /*If you code this piece, don't forget that a penalty will be inactive if it is dealing with clone nodes*/
    … …  
    205205/*}}}1*/
    206206/*FUNCTION Penpair::PenaltyCreatePVector {{{1*/
    207 void  Penpair::PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type){
     207void  Penpair::PenaltyCreatePVector(Vec pg,double kmax){
    208208        /*No loads applied, do nothing: */
    209209        return;
  • issm/trunk/src/c/objects/Loads/Penpair.h

    r4007 r4043  
    4747                void  UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
    4848                void  UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    49                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     49                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    5050                bool  InAnalysis(int analysis_type);
    5151                /*}}}*/
    5252                /*numerics: {{{1*/
    53                 void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
    54                 void  CreatePVector(Vec pg, int analysis_type,int sub_analysis_type);
    55                 void  PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type);
    56                 void  PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type);
     53                void  CreateKMatrix(Mat Kgg);
     54                void  CreatePVector(Vec pg);
     55                void  PenaltyCreateKMatrix(Mat Kgg,double kmax);
     56                void  PenaltyCreatePVector(Vec pg,double kmax);
    5757                /*}}}*/
    5858};
  • issm/trunk/src/c/objects/Loads/Riftfront.cpp

    r4021 r4043  
    290290#define _ZIGZAGCOUNTER_
    291291
    292 int   Riftfront::Constrain(int* punstable,  int analysis_type){
     292int   Riftfront::Constrain(int* punstable){
    293293
    294294        const int   numgrids        = 2;
    … …  
    374374/*}}}1*/
    375375/*FUNCTION Riftfront::CreateKMatrix {{{1*/
    376 void  Riftfront::CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type){
     376void  Riftfront::CreateKMatrix(Mat Kgg){
    377377        /*do nothing: */
    378378}
    379379/*}}}1*/
    380380/*FUNCTION Riftfront::CreatePVector {{{1*/
    381 void  Riftfront::CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type){
     381void  Riftfront::CreatePVector(Vec pg){
    382382        /*do nothing: */
    383383}
    384384/*}}}1*/
    385385/*FUNCTION Riftfront::FreezeConstraints{{{1*/
    386 void   Riftfront::FreezeConstraints( int analysis_type){
     386void   Riftfront::FreezeConstraints(void){
    387387
    388388        /*Just set frozen flag to 1: */
    … …  
    422422/*}}}1*/
    423423/*FUNCTION Riftfront::IsMaterialStable {{{1*/
    424 int   Riftfront::IsMaterialStable( int analysis_type){
     424int   Riftfront::IsMaterialStable(void){
    425425
    426426        int found=0;
    … …  
    440440/*}}}1*/
    441441/*FUNCTION Riftfront::MaxPenetration {{{1*/
    442 int   Riftfront::MaxPenetration(double* ppenetration,  int analysis_type){
     442int   Riftfront::MaxPenetration(double* ppenetration){
    443443
    444444        const int     numgrids=2;
    … …  
    506506/*}}}1*/
    507507/*FUNCTION Riftfront::PenaltyCreateKMatrix {{{1*/
    508 void  Riftfront::PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type){
     508void  Riftfront::PenaltyCreateKMatrix(Mat Kgg,double kmax){
    509509
    510510        int         i;
    … …  
    618618/*}}}1*/
    619619/*FUNCTION Riftfront::PenaltyCreatePVector {{{1*/
    620 void  Riftfront::PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type){
     620void  Riftfront::PenaltyCreatePVector(Vec pg,double kmax){
    621621
    622622        int         i                     ,j;
    … …  
    745745/*}}}1*/
    746746/*FUNCTION Riftfront::Penetration {{{1*/
    747 int   Riftfront::Penetration(double* ppenetration,  int analysis_type){
     747int   Riftfront::Penetration(double* ppenetration){
    748748
    749749        double    vx1;
    … …  
    790790/*}}}1*/
    791791/*FUNCTION Riftfront::PotentialUnstableConstraint {{{1*/
    792 int   Riftfront::PotentialUnstableConstraint(int* punstable,  int analysis_type){
     792int   Riftfront::PotentialUnstableConstraint(int* punstable){
    793793
    794794
    … …  
    849849/*}}}1*/
    850850/*FUNCTION Riftfront::PreConstrain {{{1*/
    851 int   Riftfront::PreConstrain(int* punstable,  int analysis_type){
     851int   Riftfront::PreConstrain(int* punstable){
    852852
    853853        const int   numgrids    = 2;
  • issm/trunk/src/c/objects/Loads/Riftfront.h

    r4003 r4043  
    6565                void    UpdateInputsFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
    6666                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    67                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     67                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6868                bool    InAnalysis(int analysis_type);
    6969
    … …  
    7373                /*numerics: {{{1*/
    7474                void  GetDofList(int* doflist,int* pnumberofdofs);
    75                 void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
    76                 void  CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type);
    77                 void  PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type);
    78                 void  PenaltyCreatePVector(Vec pg,double kmax,int analysis_type,int sub_analysis_type);
     75                void  CreateKMatrix(Mat Kgg);
     76                void  CreatePVector(Vec pg);
     77                void  PenaltyCreateKMatrix(Mat Kgg,double kmax);
     78                void  PenaltyCreatePVector(Vec pg,double kmax);
    7979                bool  PreStable();
    8080                void  SetPreStable();
    81                 int   PreConstrain(int* punstable,  int analysis_type);
    82                 int   Constrain(int* punstable,  int analysis_type);
    83                 void  FreezeConstraints( int analysis_type);
     81                int   PreConstrain(int* punstable);
     82                int   Constrain(int* punstable);
     83                void  FreezeConstraints(void);
    8484                bool  IsFrozen(void);
    85                 int   Penetration(double* ppenetration,  int analysis_type);
    86                 int   MaxPenetration(double* ppenetration,  int analysis_type);
    87                 int   PotentialUnstableConstraint(int* punstable,  int analysis_type);
    88                 int   IsMaterialStable( int analysis_type);
     85                int   Penetration(double* ppenetration);
     86                int   MaxPenetration(double* ppenetration);
     87                int   PotentialUnstableConstraint(int* punstable);
     88                int   IsMaterialStable(void);
    8989                void  OutputProperties(Vec riftproperties);
    9090                /*}}}*/
  • issm/trunk/src/c/objects/Materials/Material.h

    r3751 r4043  
    2929                virtual void  UpdateInputsFromVector(int* vector, int name, int type)=0;
    3030                virtual void  UpdateInputsFromVector(bool* vector, int name, int type)=0;
    31                 virtual void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type)=0;
     31                virtual void  UpdateInputsFromSolution(double* solution)=0;
    3232               
    3333};
  • issm/trunk/src/c/objects/Materials/Matice.cpp

    r4021 r4043  
    146146        return;
    147147}               
    148 /*}}}*/
    149 /*FUNCTION Matice::DistributeNumDofs {{{1*/
    150 void  Matice::DistributeNumDofs(int* numdofspernode,int analysis_type){return;}
    151148/*}}}*/
    152149/*FUNCTION Matice::Echo {{{1*/
    … …  
    461458}
    462459/*}}}*/
    463 /*FUNCTION Matice::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type) {{{1*/
    464 void  Matice::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
    465         /*Nothing updated yet*/
    466 }
    467 /*}}}*/
     460/*FUNCTION Matice::UpdateInputsFromSolution(double* solution) {{{1*/
     461void  Matice::UpdateInputsFromSolution(double* solution){
     462        /*Nothing updated yet*/
     463}
     464/*}}}*/
  • issm/trunk/src/c/objects/Materials/Matice.h

    r3984 r4043  
    3535                int   Id();
    3636                int   MyRank();
    37                 void  DistributeNumDofs(int* numdofspernode,int analysis_type);
    3837                void  UpdateFromInputs(void* inputs);
    3938                void  SetB(double B_param);
    … …  
    5150                void  UpdateInputsFromConstant(int constant, int name);
    5251                void  UpdateInputsFromConstant(bool constant, int name);
    53                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
     52                void  UpdateInputsFromSolution(double* solution);
    5453
    5554};
  • issm/trunk/src/c/objects/Materials/Matpar.cpp

    r3863 r4043  
    187187}               
    188188/*}}}1*/
    189 /*FUNCTION Matpar::DistributeNumDofs {{{1*/
    190 void  Matpar::DistributeNumDofs(int* numdofspernode,int analysis_type){return;}
    191 /*}}}1*/
    192189/*FUNCTION Matpar::Echo {{{1*/
    193190void Matpar::Echo(void){
    … …  
    312309}
    313310/*}}}*/
    314 /*FUNCTION Matpar::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type) {{{1*/
    315 void   Matpar::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
    316         /*Nothing updated yet*/
    317 }
    318 /*}}}*/
     311/*FUNCTION Matpar::UpdateInputsFromSolution(double* solution) {{{1*/
     312void   Matpar::UpdateInputsFromSolution(double* solution){
     313        /*Nothing updated yet*/
     314}
     315/*}}}*/
  • issm/trunk/src/c/objects/Materials/Matpar.h

    r3863 r4043  
    4444                int   Id();
    4545                int   MyRank();
    46                 void  DistributeNumDofs(int* numdofspernode,int analysis_type);
    4746                void  UpdateFromInputs(void* inputs);
    4847                double GetG();
    … …  
    6362                void   UpdateInputsFromConstant(int constant, int name);
    6463                void   UpdateInputsFromConstant(bool constant, int name);
    65                 void   UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
     64                void   UpdateInputsFromSolution(double* solution);
    6665
    6766
  • issm/trunk/src/c/objects/Node.h

    r4002 r4043  
    5959                void  UpdateInputsFromConstant(int constant, int name);
    6060                void  UpdateInputsFromConstant(bool constant, int name);
    61                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     61                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6262                bool  InAnalysis(int analysis_type);
    6363
  • issm/trunk/src/c/objects/Object.h

    r3751 r4043  
    3131                virtual void  UpdateInputsFromConstant(int constant, int name)=0;
    3232                virtual void  UpdateInputsFromConstant(bool constant, int name)=0;
    33                 virtual void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type)=0;
     33                virtual void  UpdateInputsFromSolution(double* solution)=0;
    3434       
    3535};
  • issm/trunk/src/c/objects/Params/BoolParam.h

    r3842 r4043  
    5656                void  UpdateInputsFromConstant(int constant, int name);
    5757                void  UpdateInputsFromConstant(bool constant, int name);
    58 
    59                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     58                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6059
    6160                /*}}}*/
  • issm/trunk/src/c/objects/Params/DoubleMatParam.h

    r3842 r4043  
    6060                void  UpdateInputsFromConstant(bool constant, int name);
    6161
    62                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     62                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6363
    6464                /*}}}*/
  • issm/trunk/src/c/objects/Params/DoubleParam.h

    r3888 r4043  
    5858                void  UpdateInputsFromConstant(bool constant, int name);
    5959
    60                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     60                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6161
    6262                /*}}}*/
  • issm/trunk/src/c/objects/Params/DoubleVecParam.h

    r3842 r4043  
    5959                void  UpdateInputsFromConstant(bool constant, int name);
    6060
    61                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     61                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6262                /*}}}*/
    6363                /*Param methods: {{{1*/
  • issm/trunk/src/c/objects/Params/IntParam.h

    r3842 r4043  
    5757                void  UpdateInputsFromConstant(int constant, int name);
    5858                void  UpdateInputsFromConstant(bool constant, int name);
    59 
    60                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     59                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6160
    6261                /*}}}*/
  • issm/trunk/src/c/objects/Params/PetscMatParam.h

    r3842 r4043  
    5757                void  UpdateInputsFromConstant(int constant, int name);
    5858                void  UpdateInputsFromConstant(bool constant, int name);
    59 
    60                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     59                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6160
    6261                /*}}}*/
  • issm/trunk/src/c/objects/Params/PetscVecParam.h

    r3842 r4043  
    5757                void  UpdateInputsFromConstant(int constant, int name);
    5858                void  UpdateInputsFromConstant(bool constant, int name);
    59 
    60                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     59                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6160
    6261                /*}}}*/
  • issm/trunk/src/c/objects/Params/StringArrayParam.h

    r3842 r4043  
    5959                void  UpdateInputsFromConstant(int constant, int name);
    6060                void  UpdateInputsFromConstant(bool constant, int name);
    61 
    62                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     61                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6362
    6463                /*}}}*/
  • issm/trunk/src/c/objects/Params/StringParam.h

    r3842 r4043  
    5757                void  UpdateInputsFromConstant(int constant, int name);
    5858                void  UpdateInputsFromConstant(bool constant, int name);
    59 
    60                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     59                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6160
    6261                /*}}}*/
  • issm/trunk/src/c/objects/Results/Result.h

    r4039 r4043  
    2626
    2727};
     28
     29
     30void NodalValuesUnitConversion(double* nodal_values, int num_nodal_values,int enum_type,Parameters* parameters);
    2831#endif
  • issm/trunk/src/c/objects/SolPar.h

    r3751 r4043  
    4646                void    UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
    4747
    48                 void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     48                void    UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    4949
    5050                /*functionality: */
  • issm/trunk/src/c/objects/Vertex.h

    r3863 r4043  
    5757                void  UpdateInputsFromConstant(bool constant, int name);
    5858
    59                 void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){ISSMERROR("Not implemented yet!");}
     59                void  UpdateInputsFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
    6060
    6161
  • issm/trunk/src/c/objects/objects.h

    r4042 r4043  
    5757#include "./Results/SingVertexResult.h"
    5858#include "./Results/BeamVertexResult.h"
    59 #include "./Results/NodalValuesUnitConversion.h"
    6059
    6160/*Materials: */
  • issm/trunk/src/c/solutions/balancedthickness2_core.cpp

    r3941 r4043  
    1010#include "./solutions.h"
    1111#include "../modules/modules.h"
     12#include "../solvers/solvers.h"
    1213
    1314Results* balancedthickness2_core(Model* model){
  • issm/trunk/src/c/solutions/balancedthickness_core.cpp

    r3941 r4043  
    1010#include "./solutions.h"
    1111#include "../modules/modules.h"
     12#include "../solvers/solvers.h"
    1213
    1314Results* balancedthickness_core(Model* model){
  • issm/trunk/src/c/solutions/balancedvelocities_core.cpp

    r3941 r4043  
    99#include "./solutions.h"
    1010#include "../modules/modules.h"
     11#include "../solvers/solvers.h"
    1112
    1213Results* balancedvelocities_core(Model* model){
  • issm/trunk/src/c/solutions/bedslope_core.cpp

    r4037 r4043  
    88#include "../EnumDefinitions/EnumDefinitions.h"
    99#include "../modules/modules.h"
     10#include "../solvers/solvers.h"
    1011
    1112void bedslope_core(FemModel* femmodel){
  • issm/trunk/src/c/solutions/control_core.cpp

    r3938 r4043  
    66#include "../modules/modules.h"
    77#include "../EnumDefinitions/EnumDefinitions.h"
     8#include "../solvers/solvers.h"
    89
    910Results* control_core(Model* model){
  • issm/trunk/src/c/solutions/diagnostic_core.cpp

    r4037 r4043  
    1010#include "../modules/modules.h"
    1111#include "../include/include.h"
     12#include "../solvers/solvers.h"
    1213
    1314void diagnostic_core(FemModel* femmodel){
    … …  
    3334        /*for qmu analysis, reinitialize velocity so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/
    3435        if(qmu_analysis){
    35                 ReinitializeInputx(femmodel,VxEnum,QmuVxEnum);
    36                 ReinitializeInputx(femmodel,VyEnum,QmuVyEnum);
    37                 ReinitializeInputx(femmodel,VzEnum,QmuVzEnum);
    38                 ReinitializeInputx(femmodel,PressureEnum,QmuPressureEnum);
     36                ReinitializeInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum,QmuVxEnum);
     37                ReinitializeInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum,QmuVyEnum);
     38                ReinitializeInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum,QmuVzEnum);
     39                ReinitializeInputx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum,QmuPressureEnum);
    3940        }
    4041
  • issm/trunk/src/c/solutions/gradjcompute_core.cpp

    r3959 r4043  
    1212#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
    1313#endif
     14
     15#include "../solvers/solvers.h"
    1416
    1517Results* gradjcompute_core(Model* model){
  • issm/trunk/src/c/solutions/prognostic2_core.cpp

    r3941 r4043  
    99#include "./solutions.h"
    1010#include "../modules/modules.h"
     11#include "../solvers/solvers.h"
    1112
    1213Results* prognostic2_core(Model* model){
  • issm/trunk/src/c/solutions/prognostic_core.cpp

    r3941 r4043  
    99#include "./solutions.h"
    1010#include "../modules/modules.h"
     11#include "../solvers/solvers.h"
    1112
    1213Results* prognostic_core(Model* model){
  • issm/trunk/src/c/solutions/solutions.h

    r4029 r4043  
    2727Results* transient_core_3d(FemModel* model);
    2828Results* thermal_core(FemModel* model);
    29 void slope_core(FemModel* fem,int sub_analysis_type);
     29void surfaceslope_core(FemModel* femmodel);
     30void bedslope_core(FemModel* femmodel);
    3031
    3132//int GradJOrth(WorkspaceParams* workspaceparams);
  • issm/trunk/src/c/solutions/steadystate_core.cpp

    r3938 r4043  
    99#include "./solutions.h"
    1010#include "../modules/modules.h"
     11#include "../solvers/solvers.h"
    1112
    1213Results* steadystate_core(Model* model){
  • issm/trunk/src/c/solutions/surfaceslope_core.cpp

    r4037 r4043  
    77#include "../objects/objects.h"
    88#include "../EnumDefinitions/EnumDefinitions.h"
     9#include "../solvers/solvers.h"
    910#include "../modules/modules.h"
    1011
  • issm/trunk/src/c/solutions/thermal_core.cpp

    r4037 r4043  
    1010#include "../modules/modules.h"
    1111#include "../include/include.h"
     12#include "../solvers/solvers.h"
    1213
    1314void thermal_core(FemModel* femmodel){
  • issm/trunk/src/c/solutions/transient_core.cpp

    r3938 r4043  
    99#include "./solutions.h"
    1010#include "../modules/modules.h"
     11#include "../solvers/solvers.h"
    1112
    1213Results* transient_core(Model* model){
  • issm/trunk/src/m/enum/BeamVertexResultEnum.m

    r4039 r4043  
    99%      macro=BeamVertexResultEnum()
    1010
    11 macro=190;
     11macro=195;
  • issm/trunk/src/m/enum/BetaEnum.m

    r4039 r4043  
    99%      macro=BetaEnum()
    1010
    11 macro=191;
     11macro=196;
  • issm/trunk/src/m/enum/CmGradientEnum.m

    r4039 r4043  
    99%      macro=CmGradientEnum()
    1010
    11 macro=192;
     11macro=197;
  • issm/trunk/src/m/enum/CmJumpEnum.m

    r4039 r4043  
    99%      macro=CmJumpEnum()
    1010
    11 macro=193;
     11macro=198;
  • issm/trunk/src/m/enum/CmMaxEnum.m

    r4039 r4043  
    99%      macro=CmMaxEnum()
    1010
    11 macro=194;
     11macro=199;
  • issm/trunk/src/m/enum/CmMinEnum.m

    r4039 r4043  
    99%      macro=CmMinEnum()
    1010
    11 macro=195;
     11macro=200;
  • issm/trunk/src/m/enum/ConnectivityEnum.m

    r4039 r4043  
    99%      macro=ConnectivityEnum()
    1010
    11 macro=196;
     11macro=201;
  • issm/trunk/src/m/enum/ControlParameterEnum.m

    r4039 r4043  
    99%      macro=ControlParameterEnum()
    1010
    11 macro=197;
     11macro=202;
  • issm/trunk/src/m/enum/ControlSteadyEnum.m

    r4039 r4043  
    99%      macro=ControlSteadyEnum()
    1010
    11 macro=198;
     11macro=203;
  • issm/trunk/src/m/enum/DakotaParameterEnum.m

    r4039 r4043  
    99%      macro=DakotaParameterEnum()
    1010
    11 macro=199;
     11macro=204;
  • issm/trunk/src/m/enum/DimEnum.m

    r4039 r4043  
    99%      macro=DimEnum()
    1010
    11 macro=200;
     11macro=205;
  • issm/trunk/src/m/enum/DoubleResultEnum.m

    r4039 r4043  
    99%      macro=DoubleResultEnum()
    1010
    11 macro=186;
     11macro=191;
  • issm/trunk/src/m/enum/EnumAsString.m

    r4039 r4043  
    167167        case PressureEnum(), string='Pressure'; return
    168168        case PressureOldEnum(), string='PressureOld'; return
     169        case QmuPressureEnum(), string='QmuPressure'; return
     170        case StokesPressureEnum(), string='StokesPressure'; return
    169171        case ResetPenaltiesEnum(), string='ResetPenalties'; return
    170172        case RheologyBEnum(), string='RheologyB'; return
    … …  
    186188        case VxObsEnum(), string='VxObs'; return
    187189        case VxOldEnum(), string='VxOld'; return
     190        case QmuVxEnum(), string='QmuVx'; return
    188191        case VyAverageEnum(), string='VyAverage'; return
    189192        case VyEnum(), string='Vy'; return
    190193        case VyObsEnum(), string='VyObs'; return
    191194        case VyOldEnum(), string='VyOld'; return
     195        case QmuVyEnum(), string='QmuVy'; return
    192196        case VzAverageEnum(), string='VzAverage'; return
    193197        case VzEnum(), string='Vz'; return
    194198        case VzObsEnum(), string='VzObs'; return
    195199        case VzOldEnum(), string='VzOld'; return
     200        case QmuVzEnum(), string='QmuVz'; return
    196201        case WeightsEnum(), string='Weights'; return
    197202        case P0Enum(), string='P0'; return
  • issm/trunk/src/m/enum/EpsAbsEnum.m

    r4039 r4043  
    99%      macro=EpsAbsEnum()
    1010
    11 macro=201;
     11macro=206;
  • issm/trunk/src/m/enum/EpsCmEnum.m

    r4039 r4043  
    99%      macro=EpsCmEnum()
    1010
    11 macro=202;
     11macro=207;
  • issm/trunk/src/m/enum/EpsRelEnum.m

    r4039 r4043  
    99%      macro=EpsRelEnum()
    1010
    11 macro=203;
     11macro=208;
  • issm/trunk/src/m/enum/EpsResEnum.m

    r4039 r4043  
    99%      macro=EpsResEnum()
    1010
    11 macro=204;
     11macro=209;
  • issm/trunk/src/m/enum/ExtrudeParamEnum.m

    r4039 r4043  
    99%      macro=ExtrudeParamEnum()
    1010
    11 macro=205;
     11macro=210;
  • issm/trunk/src/m/enum/HeatCapacityEnum.m

    r4039 r4043  
    99%      macro=HeatCapacityEnum()
    1010
    11 macro=206;
     11macro=211;
  • issm/trunk/src/m/enum/IsHutterEnum.m

    r4039 r4043  
    99%      macro=IsHutterEnum()
    1010
    11 macro=207;
     11macro=212;
  • issm/trunk/src/m/enum/IsMacAyealPattynEnum.m

    r4039 r4043  
    99%      macro=IsMacAyealPattynEnum()
    1010
    11 macro=208;
     11macro=213;
  • issm/trunk/src/m/enum/IsStokesEnum.m

    r4039 r4043  
    99%      macro=IsStokesEnum()
    1010
    11 macro=209;
     11macro=214;
  • issm/trunk/src/m/enum/LatentHeatEnum.m

    r4039 r4043  
    99%      macro=LatentHeatEnum()
    1010
    11 macro=210;
     11macro=215;
  • issm/trunk/src/m/enum/LowmemEnum.m

    r4039 r4043  
    99%      macro=LowmemEnum()
    1010
    11 macro=211;
     11macro=216;
  • issm/trunk/src/m/enum/MaxIterEnum.m

    r4039 r4043  
    99%      macro=MaxIterEnum()
    1010
    11 macro=212;
     11macro=217;
  • issm/trunk/src/m/enum/MaxNonlinearIterationsEnum.m

    r4039 r4043  
    99%      macro=MaxNonlinearIterationsEnum()
    1010
    11 macro=213;
     11macro=218;
  • issm/trunk/src/m/enum/MeltingPointEnum.m

    r4039 r4043  
    99%      macro=MeltingPointEnum()
    1010
    11 macro=214;
     11macro=219;
  • issm/trunk/src/m/enum/MinMechanicalConstraintsEnum.m

    r4039 r4043  
    99%      macro=MinMechanicalConstraintsEnum()
    1010
    11 macro=215;
     11macro=220;
  • issm/trunk/src/m/enum/MinThermalConstraintsEnum.m

    r4039 r4043  
    99%      macro=MinThermalConstraintsEnum()
    1010
    11 macro=216;
     11macro=221;
  • issm/trunk/src/m/enum/NStepsEnum.m

    r4039 r4043  
    99%      macro=NStepsEnum()
    1010
    11 macro=217;
     11macro=222;
  • issm/trunk/src/m/enum/NdtEnum.m

    r4039 r4043  
    99%      macro=NdtEnum()
    1010
    11 macro=218;
     11macro=223;
  • issm/trunk/src/m/enum/NumOutputEnum.m

    r4039 r4043  
    99%      macro=NumOutputEnum()
    1010
    11 macro=219;
     11macro=224;
  • issm/trunk/src/m/enum/NumRiftsEnum.m

    r4039 r4043  
    99%      macro=NumRiftsEnum()
    1010
    11 macro=220;
     11macro=225;
  • issm/trunk/src/m/enum/NumberOfDofsPerNodeEnum.m

    r4039 r4043  
    99%      macro=NumberOfDofsPerNodeEnum()
    1010
    11 macro=221;
     11macro=226;
  • issm/trunk/src/m/enum/NumberOfElementsEnum.m

    r4039 r4043  
    99%      macro=NumberOfElementsEnum()
    1010
    11 macro=222;
     11macro=227;
  • issm/trunk/src/m/enum/NumberOfNodesEnum.m

    r4039 r4043  
    99%      macro=NumberOfNodesEnum()
    1010
    11 macro=223;
     11macro=228;
  • issm/trunk/src/m/enum/NumberOfVerticesEnum.m

    r4039 r4043  
    99%      macro=NumberOfVerticesEnum()
    1010
    11 macro=224;
     11macro=229;
  • issm/trunk/src/m/enum/OptScalEnum.m

    r4039 r4043  
    99%      macro=OptScalEnum()
    1010
    11 macro=225;
     11macro=230;
  • issm/trunk/src/m/enum/OutputFileNameEnum.m

    r4039 r4043  
    99%      macro=OutputFileNameEnum()
    1010
    11 macro=226;
     11macro=231;
  • issm/trunk/src/m/enum/P0Enum.m

    r4039 r4043  
    99%      macro=P0Enum()
    1010
    11 macro=184;
     11macro=189;
  • issm/trunk/src/m/enum/P1Enum.m

    r4039 r4043  
    99%      macro=P1Enum()
    1010
    11 macro=185;
     11macro=190;
  • issm/trunk/src/m/enum/ParameterOutputEnum.m

    r4039 r4043  
    99%      macro=ParameterOutputEnum()
    1010
    11 macro=227;
     11macro=232;
  • issm/trunk/src/m/enum/PenaltyMeltingEnum.m

    r4039 r4043  
    99%      macro=PenaltyMeltingEnum()
    1010
    11 macro=228;
     11macro=233;
  • issm/trunk/src/m/enum/PentaVertexResultEnum.m

    r4039 r4043  
    99%      macro=PentaVertexResultEnum()
    1010
    11 macro=188;
     11macro=193;
  • issm/trunk/src/m/enum/QmuAnalysisEnum.m

    r4039 r4043  
    99%      macro=QmuAnalysisEnum()
    1010
    11 macro=229;
     11macro=234;
  • issm/trunk/src/m/enum/QmuErrNameEnum.m

    r4039 r4043  
    99%      macro=QmuErrNameEnum()
    1010
    11 macro=230;
     11macro=235;
  • issm/trunk/src/m/enum/QmuInNameEnum.m

    r4039 r4043  
    99%      macro=QmuInNameEnum()
    1010
    11 macro=231;
     11macro=236;
  • issm/trunk/src/m/enum/QmuMassFluxSegmentsEnum.m

    r4039 r4043  
    99%      macro=QmuMassFluxSegmentsEnum()
    1010
    11 macro=232;
     11macro=237;
  • issm/trunk/src/m/enum/QmuNPartEnum.m

    r4039 r4043  
    99%      macro=QmuNPartEnum()
    1010
    11 macro=233;
     11macro=238;
  • issm/trunk/src/m/enum/QmuOutNameEnum.m

    r4039 r4043  
    99%      macro=QmuOutNameEnum()
    1010
    11 macro=234;
     11macro=239;
  • issm/trunk/src/m/enum/QmuPartEnum.m

    r4039 r4043  
    99%      macro=QmuPartEnum()
    1010
    11 macro=235;
     11macro=240;
  • issm/trunk/src/m/enum/ResetPenaltiesEnum.m

    r4039 r4043  
    99%      macro=ResetPenaltiesEnum()
    1010
    11 macro=156;
     11macro=158;
  • issm/trunk/src/m/enum/ResponseDescriptorsEnum.m

    r4039 r4043  
    99%      macro=ResponseDescriptorsEnum()
    1010
    11 macro=236;
     11macro=241;
  • issm/trunk/src/m/enum/RheologyBEnum.m

    r4039 r4043  
    99%      macro=RheologyBEnum()
    1010
    11 macro=157;
     11macro=159;
  • issm/trunk/src/m/enum/RheologyNEnum.m

    r4039 r4043  
    99%      macro=RheologyNEnum()
    1010
    11 macro=158;
     11macro=160;
  • issm/trunk/src/m/enum/SegmentOnIceShelfEnum.m

    r4039 r4043  
    99%      macro=SegmentOnIceShelfEnum()
    1010
    11 macro=159;
     11macro=161;
  • issm/trunk/src/m/enum/SingVertexResultEnum.m

    r4039 r4043  
    99%      macro=SingVertexResultEnum()
    1010
    11 macro=189;
     11macro=194;
  • issm/trunk/src/m/enum/SolverStringEnum.m

    r4039 r4043  
    99%      macro=SolverStringEnum()
    1010
    11 macro=237;
     11macro=242;
  • issm/trunk/src/m/enum/SparsityEnum.m

    r4039 r4043  
    99%      macro=SparsityEnum()
    1010
    11 macro=238;
     11macro=243;
  • issm/trunk/src/m/enum/StabilizeConstraintsEnum.m

    r4039 r4043  
    99%      macro=StabilizeConstraintsEnum()
    1010
    11 macro=160;
     11macro=162;
  • issm/trunk/src/m/enum/StokesReconditioningEnum.m

    r4039 r4043  
    99%      macro=StokesReconditioningEnum()
    1010
    11 macro=161;
     11macro=163;
  • issm/trunk/src/m/enum/StringAsEnum.m

    r4039 r4043  
    165165elseif (strcmpi(name,'Pressure')), enum=PressureEnum(); return
    166166elseif (strcmpi(name,'PressureOld')), enum=PressureOldEnum(); return
     167elseif (strcmpi(name,'QmuPressure')), enum=QmuPressureEnum(); return
     168elseif (strcmpi(name,'StokesPressure')), enum=StokesPressureEnum(); return
    167169elseif (strcmpi(name,'ResetPenalties')), enum=ResetPenaltiesEnum(); return
    168170elseif (strcmpi(name,'RheologyB')), enum=RheologyBEnum(); return
    … …  
    184186elseif (strcmpi(name,'VxObs')), enum=VxObsEnum(); return
    185187elseif (strcmpi(name,'VxOld')), enum=VxOldEnum(); return
     188elseif (strcmpi(name,'QmuVx')), enum=QmuVxEnum(); return
    186189elseif (strcmpi(name,'VyAverage')), enum=VyAverageEnum(); return
    187190elseif (strcmpi(name,'Vy')), enum=VyEnum(); return
    188191elseif (strcmpi(name,'VyObs')), enum=VyObsEnum(); return
    189192elseif (strcmpi(name,'VyOld')), enum=VyOldEnum(); return
     193elseif (strcmpi(name,'QmuVy')), enum=QmuVyEnum(); return
    190194elseif (strcmpi(name,'VzAverage')), enum=VzAverageEnum(); return
    191195elseif (strcmpi(name,'Vz')), enum=VzEnum(); return
    192196elseif (strcmpi(name,'VzObs')), enum=VzObsEnum(); return
    193197elseif (strcmpi(name,'VzOld')), enum=VzOldEnum(); return
     198elseif (strcmpi(name,'QmuVz')), enum=QmuVzEnum(); return
    194199elseif (strcmpi(name,'Weights')), enum=WeightsEnum(); return
    195200elseif (strcmpi(name,'P0')), enum=P0Enum(); return
  • issm/trunk/src/m/enum/SurfaceAreaEnum.m

    r4039 r4043  
    99%      macro=SurfaceAreaEnum()
    1010
    11 macro=162;
     11macro=164;
  • issm/trunk/src/m/enum/SurfaceEnum.m

    r4039 r4043  
    99%      macro=SurfaceEnum()
    1010
    11 macro=163;
     11macro=165;
  • issm/trunk/src/m/enum/SurfaceSlopeXEnum.m

    r4039 r4043  
    99%      macro=SurfaceSlopeXEnum()
    1010
    11 macro=164;
     11macro=166;
  • issm/trunk/src/m/enum/SurfaceSlopeYEnum.m

    r4039 r4043  
    99%      macro=SurfaceSlopeYEnum()
    1010
    11 macro=165;
     11macro=167;
  • issm/trunk/src/m/enum/TemperatureAverageEnum.m

    r4039 r4043  
    99%      macro=TemperatureAverageEnum()
    1010
    11 macro=167;
     11macro=169;
  • issm/trunk/src/m/enum/TemperatureEnum.m

    r4039 r4043  
    99%      macro=TemperatureEnum()
    1010
    11 macro=166;
     11macro=168;
  • issm/trunk/src/m/enum/ThicknessEnum.m

    r4039 r4043  
    99%      macro=ThicknessEnum()
    1010
    11 macro=168;
     11macro=170;
  • issm/trunk/src/m/enum/TolXEnum.m

    r4039 r4043  
    99%      macro=TolXEnum()
    1010
    11 macro=239;
     11macro=244;
  • issm/trunk/src/m/enum/TriaVertexResultEnum.m

    r4039 r4043  
    99%      macro=TriaVertexResultEnum()
    1010
    11 macro=187;
     11macro=192;
  • issm/trunk/src/m/enum/TypeEnum.m

    r4039 r4043  
    99%      macro=TypeEnum()
    1010
    11 macro=169;
     11macro=171;
  • issm/trunk/src/m/enum/VariableDescriptorsEnum.m

    r4039 r4043  
    99%      macro=VariableDescriptorsEnum()
    1010
    11 macro=240;
     11macro=245;
  • issm/trunk/src/m/enum/VerboseEnum.m

    r4039 r4043  
    99%      macro=VerboseEnum()
    1010
    11 macro=241;
     11macro=246;
  • issm/trunk/src/m/enum/ViscosityOvershootEnum.m

    r4039 r4043  
    99%      macro=ViscosityOvershootEnum()
    1010
    11 macro=170;
     11macro=172;
  • issm/trunk/src/m/enum/VxAverageEnum.m

    r4039 r4043  
    99%      macro=VxAverageEnum()
    1010
    11 macro=171;
     11macro=173;
  • issm/trunk/src/m/enum/VxEnum.m

    r4039 r4043  
    99%      macro=VxEnum()
    1010
    11 macro=172;
     11macro=174;
  • issm/trunk/src/m/enum/VxObsEnum.m

    r4039 r4043  
    99%      macro=VxObsEnum()
    1010
    11 macro=173;
     11macro=175;
  • issm/trunk/src/m/enum/VxOldEnum.m

    r4039 r4043  
    99%      macro=VxOldEnum()
    1010
    11 macro=174;
     11macro=176;
  • issm/trunk/src/m/enum/VyAverageEnum.m

    r4039 r4043  
    99%      macro=VyAverageEnum()
    1010
    11 macro=175;
     11macro=178;
  • issm/trunk/src/m/enum/VyEnum.m

    r4039 r4043  
    99%      macro=VyEnum()
    1010
    11 macro=176;
     11macro=179;
  • issm/trunk/src/m/enum/VyObsEnum.m

    r4039 r4043  
    99%      macro=VyObsEnum()
    1010
    11 macro=177;
     11macro=180;
  • issm/trunk/src/m/enum/VyOldEnum.m

    r4039 r4043  
    99%      macro=VyOldEnum()
    1010
    11 macro=178;
     11macro=181;
  • issm/trunk/src/m/enum/VzAverageEnum.m

    r4039 r4043  
    99%      macro=VzAverageEnum()
    1010
    11 macro=179;
     11macro=183;
  • issm/trunk/src/m/enum/VzEnum.m

    r4039 r4043  
    99%      macro=VzEnum()
    1010
    11 macro=180;
     11macro=184;
  • issm/trunk/src/m/enum/VzObsEnum.m

    r4039 r4043  
    99%      macro=VzObsEnum()
    1010
    11 macro=181;
     11macro=185;
  • issm/trunk/src/m/enum/VzOldEnum.m

    r4039 r4043  
    99%      macro=VzOldEnum()
    1010
    11 macro=182;
     11macro=186;
  • issm/trunk/src/m/enum/WaitOnLockEnum.m

    r4039 r4043  
    99%      macro=WaitOnLockEnum()
    1010
    11 macro=242;
     11macro=247;
  • issm/trunk/src/m/enum/WeightsEnum.m

    r4039 r4043  
    99%      macro=WeightsEnum()
    1010
    11 macro=183;
     11macro=188;
  • issm/trunk/src/m/enum/YtsEnum.m

    r4039 r4043  
    99%      macro=YtsEnum()
    1010
    11 macro=243;
     11macro=248;
  • issm/trunk/src/m/solutions/jpl/SpawnCore.m

    r3839 r4043  
    1 function responses=SpawnCore(models,variables,variabledescriptors,analysis_type,sub_analysis_type,counter);
     1function responses=SpawnCore(models,variables,variabledescriptors,counter);
    22%SPAWNCORE - for Qmu analysis, using Dakota. Spawn the core solution.
    33%
Note: See TracChangeset for help on using the changeset viewer.