Changeset 3938


Ignore:
Timestamp:
05/25/10 10:31:51 (15 years ago)
Author:
Eric.Larour
Message:

New results API

Location:
issm/trunk/src/c
Files:
18 added
2 deleted
62 edited

Legend:

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

    r3887 r3938  
    436436        }
    437437        return;
    438 }
    439 /*}}}*/
    440 /*FUNCTION DataSet::FindResult(Vec* presult,char* name){{{1*/
    441 int   DataSet::FindResult(Vec* presult,char* name){
    442 
    443         /*Go through a dataset, and find a Result* object
    444          *whith result name is "name" : */
    445        
    446         vector<Object*>::iterator object;
    447         Result* result=NULL;
    448 
    449         int found=0;
    450 
    451         for ( object=objects.begin() ; object < objects.end(); object++ ){
    452 
    453                 /*Find param type objects: */
    454                 if((*object)->Enum()==ResultEnum){
    455 
    456                         /*Ok, this object is a result,recover it and ask which name it has: */
    457                         result=(Result*)(*object);
    458 
    459                         if (strcmp(result->GetFieldName(),name)==0){
    460                                 /*Ok, this is the one! Recover the value of this result: */
    461                                 result->GetField(presult);
    462                                 found=1;
    463                                 break;
    464                         }
    465                 }
    466         }
    467         return found;
    468 }
    469 /*}}}*/
    470 /*FUNCTION DataSet::FindResult(void* pvalue, char* name){{{1*/
    471 int   DataSet::FindResult(void* pvalue, char* name){
    472 
    473         /*Go through a dataset, and find a Result* object
    474          *which field name is "name" : */
    475        
    476         vector<Object*>::iterator object;
    477         Result* result=NULL;
    478 
    479         int found=0;
    480 
    481         for ( object=objects.begin() ; object < objects.end(); object++ ){
    482 
    483                 /*Find param type objects: */
    484                 if((*object)->Enum()==ResultEnum){
    485 
    486                         /*Ok, this object is a result, recover it and ask which name it has: */
    487                         result=(Result*)(*object);
    488 
    489                         if (strcmp(result->GetFieldName(),name)==0){
    490                                 /*Ok, this is the one! Recover the value of this result: */
    491                                 double** field=NULL;
    492                                 field=(double**)pvalue; //not very safe, but hey!
    493                                 result->GetField(field);
    494                                 found=1;
    495                                 break;
    496                         }
    497                 }
    498         }
    499         return found;
    500438}
    501439/*}}}*/
  • issm/trunk/src/c/DataSet/DataSet.h

    r3935 r3938  
    5151                int   Size();
    5252               
    53                 int   FindResult(Vec* presult,char* name);
    5453                Object* FindParamObject(char* name);
    5554                void  Ranks(int* ranks);
     
    9998                void  ComputePressure(Vec p_g,int analysis_type,int sub_analysis_type);
    10099                void  ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type);
    101                 int   FindResult(void* pvalue, char* name);
    102100                void  FieldExtrude(Vec field,double* field_serial,char* field_name, int collapse);
    103101                void  InputToResult(Mat* psolution,int enum_type);
     
    153151
    154152                void ChangeEnum(int enumtype,int new_enumtype);
     153                void PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type);
     154                void PatchFill(int* pcount, double* patches,int patch_numcols,Parameters* parameters);
     155
    155156                /*}}}*/
    156157
     
    184185};
    185186
     187/********************************************************RESULTS************************************************/
     188
     189class Results: public DataSet{
     190
     191        public:
     192
     193                /*constructors, destructors: {{{1*/
     194                Results();
     195                Results(int enum_type);
     196                ~Results();
     197                /*}}}*/
     198                /*methods: {{{1*/
     199                int   FindResult(Vec* presult,char* name);
     200                int   FindResult(void* pvalue, char* name);
     201                /*}}}*/
     202
     203};
     204
    186205
    187206#endif
  • issm/trunk/src/c/DataSet/Inputs.cpp

    r3935 r3938  
    628628}
    629629/*}}}*/
     630/*FUNCTION Inputs::PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type);{{{1*/
     631void Inputs::PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type){
     632
     633        int i;
     634
     635        vector<Object*>::iterator object;
     636        Input* input=NULL;
     637        bool   found=false;
     638
     639        int patch_numrows=0;
     640        int numcols=0;
     641
     642        /*First, recover the counter patch_numrows: */
     643        patch_numrows=*ppatch_numrows;
     644
     645        /*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
     646        for ( object=objects.begin() ; object < objects.end(); object++ ){
     647
     648                input=(Input*)(*object);
     649                if (input->EnumType()==enum_type){
     650                        found=true;
     651                        break;
     652                }
     653        }
     654
     655        if (!found){
     656                /*Ok, the input looked for does not exist. No problem. Just return a patch size of 0, and do
     657                 * not increment the counter: */
     658                numcols=0;
     659        }
     660        else{
     661                /*We found the input, get it to tell us the size of the patch information it returns, and increment
     662                 * the counter: */
     663                patch_numrows++;
     664                numcols=input->PatchSize();
     665        }
     666
     667        /*Assign output pointers:*/
     668        *ppatch_numrows=patch_numrows;
     669        *pnumcols=numcols;
     670
     671}
     672/*}}}*/
     673/*FUNCTION Inputs::PatchFill(int* pcount, double* patches,int patch_numcols);{{{1*/
     674void Inputs::PatchFill(int* pcount, double* patches,int patch_numcols,Parameters* parameters){
     675
     676        int i;
     677
     678        vector<Object*>::iterator object;
     679        Input* input=NULL;
     680        bool   found=false;
     681
     682        int count=0;
     683
     684        /*First, recover the counter patch_numrows: */
     685        count=*pcount;
     686
     687        /*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
     688        for ( object=objects.begin() ; object < objects.end(); object++ ){
     689
     690                input=(Input*)(*object);
     691                if (input->EnumType()==enum_type){
     692                        found=true;
     693                        break;
     694                }
     695        }
     696
     697        if (!found){
     698                /*Ok, the input looked for does not exist. No problem. Just return :*/
     699        }
     700        else{
     701                /*We found the input, get it to fill the patch, at the right position in the patches matrix: */
     702                input->PatchFill(patches+patch_numcols*count,parameters);
     703                count++;
     704        }
     705
     706        /*Assign output pointers:*/
     707        *pcount=count;
     708}
     709/*}}}*/
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h

    r3826 r3938  
    221221        /*}}}*/
    222222        /*Element types{{{1*/
     223        P0Enum,
    223224        P1Enum,
     225        /*}}}*/
     226        /*Results{{{1*/
     227        StringResultEnum,
     228        DoubleVecResultEnum,
     229        DoubleMatResultEnum,
    224230        /*}}}*/
    225231        /*Parameters{{{1*/
  • issm/trunk/src/c/Makefile.am

    r3931 r3938  
    105105                                        ./objects/Node.h\
    106106                                        ./objects/Node.cpp\
    107                                         ./objects/Result.h\
    108                                         ./objects/Result.cpp\
     107                                        ./objects/Results/Result.h\
     108                                        ./objects/Results/DoubleVecResult.h\
     109                                        ./objects/Results/DoubleVecResult.cpp\
     110                                        ./objects/Results/DoubleMatResult.h\
     111                                        ./objects/Results/DoubleMatResult.cpp\
     112                                        ./objects/Results/StringResult.h\
     113                                        ./objects/Results/StringResult.cpp\
    109114                                        ./objects/Elements/Tria.h\
    110115                                        ./objects/Elements/Tria.cpp\
     
    114119                                        ./objects/Elements/TriaRef.cpp\
    115120                                        ./objects/Inputs/Input.h\
     121                                        ./objects/Inputs/InputLocal.h\
    116122                                        ./objects/Inputs/TriaVertexInput.h\
    117123                                        ./objects/Inputs/TriaVertexInput.cpp\
     
    128134                                        ./objects/Inputs/DoubleInput.h\
    129135                                        ./objects/Inputs/DoubleInput.cpp\
     136                                        ./objects/Inputs/ProcessResults.cpp\
    130137                                        ./objects/Elements/Sing.h\
    131138                                        ./objects/Elements/Sing.cpp\
     
    179186                                        ./DataSet/Parameters.cpp\
    180187                                        ./DataSet/Inputs.cpp\
     188                                        ./DataSet/Results.cpp\
    181189                                        ./shared/shared.h\
    182190                                        ./shared/Alloc/alloc.h\
     
    447455                                        ./modules/InputToResultx/InputToResultx.cpp\
    448456                                        ./modules/InputToResultx/InputToResultx.h\
     457                                        ./modules/InputToResultx/PatchesSize.cpp\
     458                                        ./modules/InputToResultx/InputToPatches.cpp\
    449459                                        ./modules/ExtrudeInputx/ExtrudeInputx.cpp\
    450460                                        ./modules/ExtrudeInputx/ExtrudeInputx.h\
     
    550560                                        ./objects/Hook.h\
    551561                                        ./objects/Hook.cpp\
    552                                         ./objects/Result.h\
    553                                         ./objects/Result.cpp\
     562                                        ./objects/Results/Result.h\
     563                                        ./objects/Results/DoubleVecResult.h\
     564                                        ./objects/Results/DoubleVecResult.cpp\
     565                                        ./objects/Results/DoubleMatResult.h\
     566                                        ./objects/Results/DoubleMatResult.cpp\
     567                                        ./objects/Results/StringResult.h\
     568                                        ./objects/Results/StringResult.cpp\
    554569                                        ./objects/Elements/Tria.h\
    555570                                        ./objects/Elements/Tria.cpp\
     
    559574                                        ./objects/Elements/TriaRef.cpp\
    560575                                        ./objects/Inputs/Input.h\
     576                                        ./objects/Inputs/InputLocal.h\
    561577                                        ./objects/Inputs/TriaVertexInput.h\
    562578                                        ./objects/Inputs/TriaVertexInput.cpp\
     
    573589                                        ./objects/Inputs/DoubleInput.h\
    574590                                        ./objects/Inputs/DoubleInput.cpp\
     591                                        ./objects/Inputs/ProcessResults.cpp\
    575592                                        ./objects/Elements/Sing.h\
    576593                                        ./objects/Elements/Sing.cpp\
     
    624641                                        ./DataSet/Parameters.cpp\
    625642                                        ./DataSet/Inputs.cpp\
     643                                        ./DataSet/Results.cpp\
    626644                                        ./shared/shared.h\
    627645                                        ./shared/Threads/issm_threads.h\
     
    779797                                        ./modules/Dofx/Dofx.h\
    780798                                        ./modules/Dofx/Dofx.cpp\
     799                                        ./modules/OutputResultsx/OutputResultsx.h\
     800                                        ./modules/OutputResultsx/OutputResultsx.cpp\
    781801                                        ./modules/Dux/Dux.h\
    782802                                        ./modules/Dux/Dux.cpp\
     
    882902                                        ./modules/InputToResultx/InputToResultx.cpp\
    883903                                        ./modules/InputToResultx/InputToResultx.h\
     904                                        ./modules/InputToResultx/PatchesSize.cpp\
     905                                        ./modules/InputToResultx/InputToPatches.cpp\
    884906                                        ./modules/ExtrudeInputx/ExtrudeInputx.cpp\
    885907                                        ./modules/ExtrudeInputx/ExtrudeInputx.h\
     
    898920                                        ./solutions/objectivefunctionC.cpp\
    899921                                        ./solutions/gradjcompute_core.cpp\
    900                                         ./solutions/ProcessResults.cpp\
    901922                                        ./solutions/prognostic_core.cpp\
    902923                                        ./solutions/prognostic2_core.cpp\
     
    910931                                        ./solutions/transient_core_3d.cpp\
    911932                                        ./solutions/steadystate_core.cpp\
    912                                         ./solutions/OutputResults.cpp\
    913933                                        ./modules/Bamgx/Bamgx.cpp\
    914934                                        ./modules/Bamgx/Bamgx.h\
  • issm/trunk/src/c/modules/InputToResultx/InputToResultx.cpp

    r3913 r3938  
    1313void InputToResultx(Result** presult,DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials,Parameters* parameters,int enum_type,int id, double time, int step){
    1414
     15        int i,j,count;
     16
     17        /*output: */
     18        Result* result=NULL;
     19
    1520        /*Intermediary output vector*/
    16         Mat     solution=NULL;
    17         Result* result=NULL;
     21        double* patches=NULL; //build a matrix of patch information, corresponding to the input with  name enum_type
     22        int     patch_numrows,patch_numcols;
    1823
    1924        /*First, get elements*/
    2025        elements->Configure(elements,loads, nodes,vertices, materials,parameters);
    2126
    22         /*Then extrude vertically the new inputs*/
    23         elements->InputToResult(&solution,enum_type);
     27        /*Figure out size of patches matrix: */
     28        PatchesSize(elements,&patch_numrows, &patch_numcols,enum_type);
    2429
    25         /*Create Result and clean up*/
    26         /*Mat support in result to be added!!!!!!*/
    27         //result=new Result(id,time,step,enum_type,solution);
    28         MatFree(&solution);
     30        /*Allocate matrix: */
     31        patches=(double*)xmalloc(patch_numrows*patch_numcols*sizeof(double));
     32
     33        /*Fill patches with NaN, default value: */
     34        for(i=0;i<patch_numrows;i++){
     35                for(j=0;j<patch_numcols;j++){
     36                        *(patches+patch_numcols*i+j)=NAN;
     37                }
     38        }
     39
     40        /*Now, go through elements, their inputs with the correct enum_type, and fill the patches: */
     41        InputToPatches(elements,patches,patch_numrows,patch_numcols);
     42
     43        /*Create result object embedding patches: */
     44        result=new DoubleMatResult(id,enum_type,time,step,patches,patch_numrows,patch_numcols);
    2945
    3046        /*Assign output pointer*/
  • issm/trunk/src/c/modules/InputToResultx/InputToResultx.h

    r3913 r3938  
    88#include "../../DataSet/DataSet.h"
    99
    10 /* local prototypes: */
     10/* global prototype: */
    1111void InputToResultx(Result** presult,DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials,Parameters* parameters,int enum_type,int id, double time, int step);
    1212
     13/* local prototypes: */
     14void PatchesSize(DataSet* elements,int* ppatch_numrows, int* ppatch_numcols,int enum_type);
     15void InputToPatches(DataSet* elements,double* patches,int patch_numrows,int patch_numcols);
     16
    1317#endif  /* _INPUTTORESULTX_H */
    14 
  • issm/trunk/src/c/modules/Qmux/DakotaResponses.cpp

    r3913 r3938  
    1717#include "../modules.h"
    1818
    19 void DakotaResponses(double* responses,char** responses_descriptors,int numresponses,Model* model,DataSet* results,DataSet* processed_results,int analysis_type,int sub_analysis_type){
     19void DakotaResponses(double* responses,char** responses_descriptors,int numresponses,Model* model,Results* results,Results* processed_results,int analysis_type,int sub_analysis_type){
    2020
    2121        int i,j;
  • issm/trunk/src/c/modules/Qmux/SpawnCoreParallel.cpp

    r3913 r3938  
    3939       
    4040        /*output from core solutions: */
    41         DataSet* results=NULL;
    42         DataSet* processed_results=NULL;
     41        Results* results=NULL;
     42        Results* processed_results=NULL;
    4343
    4444        char** responses_descriptors=NULL;
     
    123123        else ISSMERROR("%s%i%s%i%s"," analysis_type ",analysis_type," and sub_analysis_type ",sub_analysis_type," not supported yet!");
    124124       
    125                
    126 
    127         /*Now process the outputs, before computing the dakota responses: */
    128         if(verbose)_printf_("process results:\n");
    129 
    130         ProcessResults(&processed_results,results,model,analysis_type);
    131 
    132125        /*compute responses on cpu 0: dummy for now! */
    133126        if(verbose)_printf_("compute dakota responses:\n");
  • issm/trunk/src/c/modules/modules.h

    r3909 r3938  
    6464#include "./InputToResultx/InputToResultx.h"
    6565#include "./GetSolutionFromInputsx/GetSolutionFromInputsx.h"
     66#include "./OutputResultsx/OutputResultsx.h"
    6667#endif
  • issm/trunk/src/c/objects/Elements/Beam.cpp

    r3928 r3938  
    808808}
    809809/*}}}*/
     810/*FUNCTION Beam::PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type){{{1*/
     811void  Beam::PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type){
     812        this->inputs->PatchSize(ppatch_numrows,pnumcols,enum_type);
     813}
     814/*}}}*/
     815/*FUNCTION Beam::PatchFill(int* pcount, double* patches,int patch_numcols);{{{1*/
     816void  Beam::PatchFill(int* pcount, double* patches,int patch_numcols){
     817        this->inputs->PatchFill(pcount,patches,patch_numcols,this->parameters);
     818}
     819/*}}}*/
  • issm/trunk/src/c/objects/Elements/Beam.h

    r3928 r3938  
    7979                void  ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type);
    8080                void  GetNodes(void** vpnodes);
     81                void  PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type);
     82                void  PatchFill(int* pcount, double* patches,int patch_numcols);
     83
    8184                /*}}}*/
    8285                /*not implemented: {{{1*/
  • issm/trunk/src/c/objects/Elements/Element.h

    r3887 r3938  
    4747                virtual void   ComputeStrainRate(Vec eps,     int analysis_type,int sub_analysis_type)=0;
    4848                virtual double MassFlux(double* segment,double* ug)=0;
     49                virtual void   PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type)=0;
     50                virtual void   PatchFill(int* pcount, double* patches,int patch_numcols)=0;
    4951
    5052                /*Implementation: */
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r3936 r3938  
    46934693}
    46944694/*}}}*/
     4695/*FUNCTION Penta::PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type){{{1*/
     4696void  Penta::PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type){
     4697        this->inputs->PatchSize(ppatch_numrows,pnumcols,enum_type);
     4698}
     4699/*}}}*/
     4700/*FUNCTION Penta::PatchFill(int* pcount, double* patches,int patch_numcols);{{{1*/
     4701void  Penta::PatchFill(int* pcount, double* patches,int patch_numcols){
     4702        this->inputs->PatchFill(pcount,patches,patch_numcols,this->parameters);
     4703}
     4704/*}}}*/
  • issm/trunk/src/c/objects/Elements/Penta.h

    r3936 r3938  
    143143                void  GetPhi(double* phi, double*  epsilon, double viscosity);
    144144                double MassFlux(double* segment,double* ug);
     145                void  PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type);
     146                void  PatchFill(int* pcount, double* patches,int patch_numcols);
    145147
    146148                /*updates: */
     
    160162                void  UpdateInputsFromConstant(int constant, int name);
    161163                void  UpdateInputsFromConstant(bool constant, int name);
     164               
     165       
    162166                /*}}}*/
    163167
  • issm/trunk/src/c/objects/Elements/Sing.cpp

    r3928 r3938  
    595595}
    596596/*}}}*/
     597/*FUNCTION Sing::PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type){{{1*/
     598void  Sing::PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type){
     599        this->inputs->PatchSize(ppatch_numrows,pnumcols,enum_type);
     600}
     601/*}}}*/
     602/*FUNCTION Sing::PatchFill(int* pcount, double* patches,int patch_numcols);{{{1*/
     603void  Sing::PatchFill(int* pcount, double* patches,int patch_numcols){
     604        this->inputs->PatchFill(pcount,patches,patch_numcols,this->parameters);
     605}
     606/*}}}*/
  • issm/trunk/src/c/objects/Elements/Sing.h

    r3920 r3938  
    7878                void  ComputeStrainRate(Vec eps,int analysis_type,int sub_analysis_type);
    7979                void  GetNodes(void** vpnodes);
     80                void  PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type);
     81                void  PatchFill(int* pcount, double* patches,int patch_numcols);
     82
    8083                /*}}}*/
    8184                /*not implemented: {{{1*/
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r3920 r3938  
    47474747}
    47484748/*}}}*/
     4749/*FUNCTION Tria::PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type){{{1*/
     4750void  Tria::PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type){
     4751        this->inputs->PatchSize(ppatch_numrows,pnumcols,enum_type);
     4752}
     4753/*}}}*/
     4754/*FUNCTION Tria::PatchFill(int* pcount, double* patches,int patch_numcols);{{{1*/
     4755void  Tria::PatchFill(int* pcount, double* patches,int patch_numcols){
     4756        this->inputs->PatchFill(pcount,patches,patch_numcols,this->parameters);
     4757}
     4758/*}}}*/
  • issm/trunk/src/c/objects/Elements/Tria.h

    r3920 r3938  
    118118                double GetArea(void);
    119119                double GetAreaCoordinate(double x, double y, int which_one);
     120                void  PatchSize(int* ppatch_numrows,int* pnumcols, int enum_type);
     121                void  PatchFill(int* pcount, double* patches,int patch_numcols);
     122
    120123                /*}}}*/
    121124                /*FUNCTION updates{{{1*/
  • issm/trunk/src/c/objects/Inputs/BeamVertexInput.cpp

    r3935 r3938  
    1111#include "stdio.h"
    1212#include <string.h>
     13#include "./InputLocal.h"
    1314#include "../objects.h"
    1415#include "../../EnumDefinitions/EnumDefinitions.h"
     
    205206}
    206207/*}}}*/
     208/*FUNCTION BeamVertexInput::PatchSize(void);{{{1*/
     209int BeamVertexInput::PatchSize(void){
     210        return 2;
     211}
     212/*}}}*/
     213/*FUNCTION BeamVertexInput::PatchFill(double* patches);{{{1*/
     214void BeamVertexInput::PatchFill(double* patches,Parameters* parameters){
     215        patches[0]=values[0];
     216        patches[1]=values[1];
     217
     218        /*Now, post-processing: */
     219        ProcessResults(patches,2,this->enum_type,parameters);
     220
     221}
     222/*}}}*/
  • issm/trunk/src/c/objects/Inputs/BeamVertexInput.h

    r3935 r3938  
    7272                void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
    7373                void ChangeEnum(int newenumtype);
     74                int  PatchSize(void);
     75                void PatchFill(double* patches,Parameters* parameters);
    7476                /*}}}*/
    7577
  • issm/trunk/src/c/objects/Inputs/BoolInput.cpp

    r3935 r3938  
    1111#include "stdio.h"
    1212#include <string.h>
     13#include "./InputLocal.h"
    1314#include "../objects.h"
    1415#include "../../EnumDefinitions/EnumDefinitions.h"
     
    195196}
    196197/*}}}*/
     198/*FUNCTION BoolInput::PatchSize(void);{{{1*/
     199int BoolInput::PatchSize(void){
     200        return 1;
     201}
     202/*}}}*/
     203/*FUNCTION BoolInput::PatchFill(double* patches);{{{1*/
     204void BoolInput::PatchFill(double* patches,Parameters* parameters){
     205        patches[0]=(double)value;
     206       
     207        /*Now, post-processing: */
     208        ProcessResults(patches,1,this->enum_type,parameters);
     209}
     210/*}}}*/
  • issm/trunk/src/c/objects/Inputs/BoolInput.h

    r3935 r3938  
    7272                void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
    7373                void ChangeEnum(int newenumtype);
     74                int  PatchSize(void);
     75                void PatchFill(double* patches,Parameters* parameters);
    7476                /*}}}*/
    7577
  • issm/trunk/src/c/objects/Inputs/DoubleInput.cpp

    r3935 r3938  
    1111#include "stdio.h"
    1212#include <string.h>
     13#include "./InputLocal.h"
    1314#include "../objects.h"
    1415#include "../../EnumDefinitions/EnumDefinitions.h"
     
    205206}
    206207/*}}}*/
     208/*FUNCTION DoubleInput::PatchSize(void);{{{1*/
     209int DoubleInput::PatchSize(void){
     210        return 1;
     211}
     212/*}}}*/
     213/*FUNCTION DoubleInput::PatchFill(double* patches);{{{1*/
     214void DoubleInput::PatchFill(double* patches,Parameters* parameters){
     215        patches[0]=value;
     216       
     217        /*Now, post-processing: */
     218        ProcessResults(patches,1,this->enum_type,parameters);
     219}
     220/*}}}*/
  • issm/trunk/src/c/objects/Inputs/DoubleInput.h

    r3935 r3938  
    7272                void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
    7373                void ChangeEnum(int newenumtype);
     74                int  PatchSize(void);
     75                void PatchFill(double* patches,Parameters* parameters);
    7476                /*}}}*/
    7577
  • issm/trunk/src/c/objects/Inputs/Input.h

    r3935 r3938  
    4646                virtual Input* SpawnBeamInput(int* indices)=0;
    4747                virtual Input* SpawnTriaInput(int* indices)=0;
     48                virtual int  PatchSize(void)=0;
     49                virtual void PatchFill(double* patches,Parameters* parameters)=0;
    4850                /*}}}*/
    4951
  • issm/trunk/src/c/objects/Inputs/IntInput.cpp

    r3935 r3938  
    1111#include "stdio.h"
    1212#include <string.h>
     13#include "./InputLocal.h"
    1314#include "../objects.h"
    1415#include "../../EnumDefinitions/EnumDefinitions.h"
     
    193194}
    194195/*}}}*/
     196/*FUNCTION IntInput::PatchSize(void);{{{1*/
     197int IntInput::PatchSize(void){
     198        return 1;
     199}
     200/*}}}*/
     201/*FUNCTION IntInput::PatchFill(double* patches);{{{1*/
     202void IntInput::PatchFill(double* patches,Parameters* parameters){
     203        patches[0]=(double)value;
     204       
     205        /*Now, post-processing: */
     206        ProcessResults(patches,1,this->enum_type,parameters);
     207
     208}
     209/*}}}*/
  • issm/trunk/src/c/objects/Inputs/IntInput.h

    r3935 r3938  
    7272                void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
    7373                void ChangeEnum(int newenumtype);
     74                int  PatchSize(void);
     75                void PatchFill(double* patches,Parameters* parameters);
    7476                /*}}}*/
    7577
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp

    r3935 r3938  
    1111#include "stdio.h"
    1212#include <string.h>
     13#include "./InputLocal.h"
    1314#include "../objects.h"
    1415#include "../../EnumDefinitions/EnumDefinitions.h"
     
    854855}
    855856/*}}}*/
     857/*FUNCTION PentaVertexInput::PatchSize(void);{{{1*/
     858int PentaVertexInput::PatchSize(void){
     859        return 6;
     860}
     861/*}}}*/
     862/*FUNCTION PentaVertexInput::PatchFill(double* patches);{{{1*/
     863void PentaVertexInput::PatchFill(double* patches,Parameters* parameters){
     864
     865        patches[0]=values[0];
     866        patches[1]=values[1];
     867        patches[2]=values[2];
     868        patches[3]=values[3];
     869        patches[4]=values[4];
     870        patches[5]=values[5];
     871       
     872        /*Now, post-processing: */
     873        ProcessResults(patches,6,this->enum_type,parameters);
     874
     875}
     876/*}}}*/
  • issm/trunk/src/c/objects/Inputs/PentaVertexInput.h

    r3935 r3938  
    8181                void GetBPattyn(double* B, double* xyz_list, double* gauss_coord);
    8282                void GetBStokes(double* B, double* xyz_list, double* gauss_coord);
     83                int  PatchSize(void);
     84                void PatchFill(double* patches,Parameters* parameters);
    8385                /*}}}*/
    8486
  • issm/trunk/src/c/objects/Inputs/SingVertexInput.cpp

    r3935 r3938  
    1111#include "stdio.h"
    1212#include <string.h>
     13#include "./InputLocal.h"
    1314#include "../objects.h"
    1415#include "../../EnumDefinitions/EnumDefinitions.h"
     
    184185}
    185186/*}}}*/
     187/*FUNCTION SingVertexInput::PatchSize(void);{{{1*/
     188int SingVertexInput::PatchSize(void){
     189        return 1;
     190}
     191/*}}}*/
     192/*FUNCTION SingVertexInput::PatchFill(double* patches);{{{1*/
     193void SingVertexInput::PatchFill(double* patches,Parameters* parameters){
     194        patches[0]=value;
     195       
     196        /*Now, post-processing: */
     197        ProcessResults(patches,1,this->enum_type,parameters);
     198
     199}
     200/*}}}*/
  • issm/trunk/src/c/objects/Inputs/SingVertexInput.h

    r3935 r3938  
    7171                void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};
    7272                void ChangeEnum(int newenumtype);
     73                int  PatchSize(void);
     74                void PatchFill(double* patches,Parameters* parameters);
    7375                /*}}}*/
    7476
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp

    r3935 r3938  
    1111#include "stdio.h"
    1212#include <string.h>
     13#include "./InputLocal.h"
    1314#include "../objects.h"
    1415#include "../../EnumDefinitions/EnumDefinitions.h"
     
    428429}
    429430/*}}}*/
     431/*FUNCTION TriaVertexInput::PatchSize(void);{{{1*/
     432int TriaVertexInput::PatchSize(void){
     433        return 3;
     434}
     435/*}}}*/
     436/*FUNCTION TriaVertexInput::PatchFill(double* patches);{{{1*/
     437void TriaVertexInput::PatchFill(double* patches,Parameters* parameters){
     438       
     439        patches[0]=values[0];
     440        patches[1]=values[1];
     441        patches[2]=values[2];
     442       
     443        /*Now, post-processing: */
     444        ProcessResults(patches,3,this->enum_type,parameters);
     445
     446
     447}
     448/*}}}*/
  • issm/trunk/src/c/objects/Inputs/TriaVertexInput.h

    r3935 r3938  
    7979                void GetJacobian(double* J, double* xyz_list,double* gauss);
    8080                void GetJacobianInvert(double*  Jinv, double* xyz_list,double* gauss);
     81                int  PatchSize(void);
     82                void PatchFill(double* patches,Parameters* parameters);
    8183                /*}}}*/
    8284
  • issm/trunk/src/c/objects/objects.h

    r3913 r3938  
    5151#include "./Inputs/SingVertexInput.h"
    5252#include "./Inputs/TriaVertexInput.h"
     53
     54/*Results: */
     55#include "./Results/Result.h"
     56#include "./Results/StringResult.h"
     57#include "./Results/DoubleVecResult.h"
     58#include "./Results/DoubleMatResult.h"
    5359
    5460/*Materials: */
  • issm/trunk/src/c/solutions/ControlRestart.cpp

    r3913 r3938  
    1313
    1414        /*output: */
    15         DataSet* temporary_results=NULL;
    16         DataSet* results=NULL;
    17         Result*  result=NULL;
     15        Results* results=NULL;
    1816        char*    outputfilename=NULL;
    1917
     
    2927        /*Plug COPYS of the results into output dataset:
    3028         * only the pointer is given to temporary_results and at the
    31          * end of ProcessResults the pointer is deleted. That would
     29         * end of ProcessResultsx the pointer is deleted. That would
    3230         * destroy param_g*/
    3331
     
    3533        for(i=0;i<numberofnodes;i++) param_g_copy[i]=param_g[i];
    3634
    37         temporary_results=new DataSet(ResultsEnum);
    38         result=new Result(temporary_results->Size()+1,0,1,"param_g",param_g_copy,numberofnodes);
    39         temporary_results->AddObject(result);
    40        
    41         result=new Result(temporary_results->Size()+1,0,1,"analysis_type",EnumAsString(DiagnosticAnalysisEnum));
    42         temporary_results->AddObject(result);
    43 
    44         //process results
    45         ProcessResults(&results,temporary_results,model,ControlAnalysisEnum);
     35        results=new Results();
     36        results->AddObject(new Result(results->Size()+1,0,1,"param_g",param_g_copy,numberofnodes));
     37        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(DiagnosticAnalysisEnum)));
    4638
    4739        //Write results on disk
     
    4941       
    5042        /*Free ressources:*/
    51         delete temporary_results;
    5243        delete results;
    5344        xfree((void**)&outputfilename);
  • issm/trunk/src/c/solutions/balancedthickness.cpp

    r3913 r3938  
    3333
    3434        /*Results: */
    35         DataSet* results=NULL;
    36         DataSet* processedresults=NULL;
    37         Result*  result=NULL;
    38 
     35        Results* results=NULL;
    3936        Param*   param=NULL;
    4037
     
    105102        }
    106103
    107         _printf_("process results:\n");
    108         ProcessResults(&processedresults,results,model,BalancedthicknessAnalysisEnum);
    109        
    110104        _printf_("write results to disk:\n");
    111         OutputResults(processedresults,outputfilename);
     105        OutputResults(results,outputfilename);
    112106
    113107        if (waitonlock>0){
     
    117111
    118112        /*Free ressources:*/
    119         delete processedresults;
    120113        delete results;
    121114        delete model;
  • issm/trunk/src/c/solutions/balancedthickness2.cpp

    r3913 r3938  
    3333
    3434        /*Results: */
    35         DataSet* results=NULL;
    36         DataSet* processedresults=NULL;
     35        Results* results=NULL;
    3736        Result*  result=NULL;
    3837
     
    105104        }
    106105
    107         _printf_("process results:\n");
    108         ProcessResults(&processedresults,results,model,Balancedthickness2AnalysisEnum);
    109        
    110106        _printf_("write results to disk:\n");
    111         OutputResults(processedresults,outputfilename);
     107        OutputResults(results,outputfilename);
    112108
    113109        if (waitonlock>0){
     
    117113
    118114        /*Free ressources:*/
    119         delete processedresults;
    120115        delete results;
    121116        delete model;
  • issm/trunk/src/c/solutions/balancedthickness2_core.cpp

    r3913 r3938  
    1111#include "../modules/modules.h"
    1212
    13 DataSet* balancedthickness2_core(Model* model){
     13Results* balancedthickness2_core(Model* model){
    1414
    1515        extern int my_rank;
    1616
    1717        /*output: */
    18         Result* result=NULL;
    19         DataSet* results=NULL;
     18        Results* results=NULL;
    2019
    2120        /*intermediary: */
     
    3736
    3837        //initialize results:
    39         results=new DataSet(ResultsEnum);
     38        results=new Results();
    4039
    4140        fem_p=model->GetFormulation(Balancedthickness2AnalysisEnum);
     
    6867
    6968        /*Plug results into output dataset: */
    70         result=new Result(results->Size()+1,0,1,"h_g",h_g);
    71         results->AddObject(result);
     69        results->AddObject(new Result(results->Size()+1,0,1,"h_g",h_g));
    7270
    7371        /*Add analysis_type to results: */
    74         result=new Result(results->Size()+1,0,1,"analysis_type","balancedthickness2");
    75         results->AddObject(result);
     72        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(Balancedthickness2AnalysisEnum)));
    7673
    7774        /*Free ressources:*/
  • issm/trunk/src/c/solutions/balancedthickness_core.cpp

    r3913 r3938  
    1111#include "../modules/modules.h"
    1212
    13 DataSet* balancedthickness_core(Model* model){
     13Results* balancedthickness_core(Model* model){
    1414
    1515        extern int my_rank;
    1616
    1717        /*output: */
    18         Result* result=NULL;
    19         DataSet* results=NULL;
     18        Results* results=NULL;
    2019
    2120        /*intermediary: */
     
    3534
    3635        //initialize results:
    37         results=new DataSet(ResultsEnum);
     36        results=new Results();
    3837
    3938        /*recover fem model: */
     
    5857
    5958        /*Plug results into output dataset: */
    60         result=new Result(results->Size()+1,0,1,"h_g",h_g);
    61         results->AddObject(result);
     59        results->AddObject(new Result(results->Size()+1,0,1,"h_g",h_g));
    6260
    6361        /*Add analysis_type to results: */
    64         result=new Result(results->Size()+1,0,1,"analysis_type","balancedthickness");
    65         results->AddObject(result);
     62        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(BalancedthicknessAnalysisEnum)));
    6663
    6764        /*Free ressources:*/
  • issm/trunk/src/c/solutions/balancedvelocities.cpp

    r3913 r3938  
    3232
    3333        /*Results: */
    34         DataSet* results=NULL;
    35         DataSet* processedresults=NULL;
     34        Results* results=NULL;
    3635        Result*  result=NULL;
    3736        Param*   param=NULL;
     
    103102        }
    104103
    105         _printf_("process results:\n");
    106         ProcessResults(&processedresults,results,model,BalancedvelocitiesAnalysisEnum);
    107        
    108104        _printf_("write results to disk:\n");
    109         OutputResults(processedresults,outputfilename);
     105        OutputResults(results,outputfilename);
    110106
    111107        if (waitonlock>0){
     
    115111
    116112        /*Free ressources:*/
    117         delete processedresults;
    118113        delete results;
    119114        delete model;
  • issm/trunk/src/c/solutions/balancedvelocities_core.cpp

    r3913 r3938  
    1010#include "../modules/modules.h"
    1111
    12 DataSet* balancedvelocities_core(Model* model){
     12Results* balancedvelocities_core(Model* model){
    1313
    1414        extern int my_rank;
    1515
    1616        /*output: */
    17         Result* result=NULL;
    18         DataSet* results=NULL;
     17        Results* results=NULL;
    1918
    2019        /*intermediary: */
     
    3433
    3534        //initialize results:
    36         results=new DataSet(ResultsEnum);
     35        results=new Results();
    3736
    3837        /*recover fem model: */
     
    5756
    5857        /*Plug results into output dataset: */
    59         result=new Result(results->Size()+1,0,1,"v_g",v_g);
    60         results->AddObject(result);
     58        results->AddObject(new Result(results->Size()+1,0,1,"v_g",v_g));
    6159
    6260        /*Add analysis_type to results: */
    63         result=new Result(results->Size()+1,0,1,"analysis_type","balancedvelocities");
    64         results->AddObject(result);
     61        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(BalancedvelocitiesAnalysisEnum)));
    6562
    6663        /*Free ressources:*/
  • issm/trunk/src/c/solutions/control_core.cpp

    r3913 r3938  
    77#include "../EnumDefinitions/EnumDefinitions.h"
    88
    9 DataSet* control_core(Model* model){
     9Results* control_core(Model* model){
    1010
    1111        extern int my_rank;
     
    1515
    1616        /*output: */
    17         DataSet* results=NULL;
    18         Result* result=NULL;
     17        Results* results=NULL;
    1918
    2019        /*Intermediary: */
    21         DataSet* diagnostic_results=NULL;
    22         DataSet* gradjcompute_results=NULL;
    23         DataSet* steadystate_results=NULL;
     20        Results* diagnostic_results=NULL;
     21        Results* gradjcompute_results=NULL;
     22        Results* steadystate_results=NULL;
    2423        Vec     u_g=NULL;
    2524        Vec     t_g=NULL;
     
    5756
    5857        //initialize results
    59         results=new DataSet(ResultsEnum);
     58        results=new Results();
    6059
    6160        /*Process models*/
     
    110109                       
    111110                        /*Plug results into output dataset: */
    112                         result=new Result(results->Size()+1,0,1,"grad_g",grad_g);
    113                         results->AddObject(result);
    114        
    115                         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(analysis_type));
    116                         results->AddObject(result);
     111                        results->AddObject(new Result(results->Size()+1,0,1,"grad_g",grad_g));
     112                        results->AddObject(new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(analysis_type)));
    117113       
    118114                        /*Free ressources: */
     
    219215
    220216        /*Plug results into output dataset: */
    221         result=new Result(results->Size()+1,0,1,"u_g",u_g);
    222         results->AddObject(result);
    223         result=new Result(results->Size()+1,0,1,"param_g",param_g,numberofnodes);
    224         results->AddObject(result);
    225         result=new Result(results->Size()+1,0,1,"J",J,nsteps);
    226         results->AddObject(result);
     217        results->AddObject(new Result(results->Size()+1,0,1,"u_g",u_g));
     218        results->AddObject(new Result(results->Size()+1,0,1,"param_g",param_g,numberofnodes));
     219        results->AddObject(new Result(results->Size()+1,0,1,"J",J,nsteps));
    227220        if (control_steady){
    228                 result=new Result(results->Size()+1,0,1,"t_g",t_g);
    229                 results->AddObject(result);
    230                 result=new Result(results->Size()+1,0,1,"m_g",m_g);
    231                 results->AddObject(result);
     221                results->AddObject(new Result(results->Size()+1,0,1,"t_g",t_g));
     222                results->AddObject(new Result(results->Size()+1,0,1,"m_g",m_g));
    232223        }
    233224       
    234225        /*Add analysis_type and control_type to results: */
    235         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(analysis_type));
    236         results->AddObject(result);
    237         result=new Result(results->Size()+1,0,1,"control_type",EnumAsString(control_type));
    238         results->AddObject(result);
    239 
     226        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(analysis_type)));
     227        results->AddObject(new StringResult(results->Size()+1,ControlTypeEnum,0,1,EnumAsString(control_type)));
    240228
    241229        /*Free ressources: */
  • issm/trunk/src/c/solutions/diagnostic.cpp

    r3913 r3938  
    3131
    3232        /*Results: */
    33         DataSet* results=NULL;
    34         DataSet* processed_results=NULL;
    35         Result*  result=NULL;
     33        Results* results=NULL;
    3634       
    3735        bool waitonlock=false;
     
    10098                        MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
    10199
    102                         _printf_("process results:\n");
    103                         ProcessResults(&processed_results,results,model,DiagnosticAnalysisEnum);
    104100                }
    105101                else{
     
    110106                        MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
    111107
    112                         _printf_("process results:\n");
    113                         ProcessResults(&processed_results,results,model,ControlAnalysisEnum);
    114108                }
    115109
    116110                _printf_("write results to disk:\n");
    117                 OutputResults(processed_results,outputfilename);
     111                OutputResults(results,outputfilename);
    118112        }
    119113        else{
     
    138132        delete model;
    139133        delete results;
    140         delete processed_results;
    141134
    142135        /*Get finish time and close*/
  • issm/trunk/src/c/solutions/diagnostic_core.cpp

    r3922 r3938  
    1111#include "../include/include.h"
    1212
    13 DataSet* diagnostic_core(Model* model){
     13Results* diagnostic_core(Model* model){
    1414
    1515        extern int my_rank;
     
    2424
    2525        /*output: */
    26         DataSet* results=NULL;
    27         Result* result=NULL;
     26        Results* results=NULL;
     27        Result*  result=NULL;
    2828
    2929        /*solutions: */
     
    6868
    6969        //initialize results
    70         results=new DataSet(ResultsEnum);
     70        results=new Results();
    7171
    7272        //first recover parameters common to all solutions
     
    180180       
    181181        /*Plug results into output dataset: */
    182         result=new Result(results->Size()+1,0,1,"u_g",ug);
    183         results->AddObject(result);
    184         result=new Result(results->Size()+1,0,1,"p_g",pg);
    185         results->AddObject(result);
    186         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(DiagnosticAnalysisEnum));
    187         results->AddObject(result);
     182        if(dim==2){
     183                if(ismacayealpattyn){
     184                        InputToResultx(&result,fem_dh->elements,fem_dh->nodes,fem_dh->vertices, fem_dh->loads, fem_dh->materials,fem_dh->parameters,VxEnum,results->Size()+1,0,1); results->AddObject(result);
     185                        InputToResultx(&result,fem_dh->elements,fem_dh->nodes,fem_dh->vertices, fem_dh->loads, fem_dh->materials,fem_dh->parameters,VyEnum,results->Size()+1,0,1); results->AddObject(result);
     186                        InputToResultx(&result,fem_dh->elements,fem_dh->nodes,fem_dh->vertices, fem_dh->loads, fem_dh->materials,fem_dh->parameters,PressureEnum,results->Size()+1,0,1); results->AddObject(result);
     187                }
     188                else{
     189                        InputToResultx(&result,fem_dhu->elements,fem_dhu->nodes,fem_dhu->vertices, fem_dhu->loads, fem_dhu->materials,fem_dhu->parameters,VxEnum,results->Size()+1,0,1); results->AddObject(result);
     190                        InputToResultx(&result,fem_dhu->elements,fem_dhu->nodes,fem_dhu->vertices, fem_dhu->loads, fem_dhu->materials,fem_dhu->parameters,VyEnum,results->Size()+1,0,1); results->AddObject(result);
     191                        InputToResultx(&result,fem_dhu->elements,fem_dhu->nodes,fem_dhu->vertices, fem_dhu->loads, fem_dhu->materials,fem_dhu->parameters,PressureEnum,results->Size()+1,0,1); results->AddObject(result);
     192                }
     193        }
     194        else{
     195                if(isstokes){
     196                        InputToResultx(&result,fem_ds->elements,fem_ds->nodes,fem_ds->vertices, fem_ds->loads, fem_ds->materials,fem_ds->parameters,VxEnum,results->Size()+1,0,1); results->AddObject(result);
     197                        InputToResultx(&result,fem_ds->elements,fem_ds->nodes,fem_ds->vertices, fem_ds->loads, fem_ds->materials,fem_ds->parameters,VyEnum,results->Size()+1,0,1); results->AddObject(result);
     198                        InputToResultx(&result,fem_ds->elements,fem_ds->nodes,fem_ds->vertices, fem_ds->loads, fem_ds->materials,fem_ds->parameters,VzEnum,results->Size()+1,0,1); results->AddObject(result);
     199                        InputToResultx(&result,fem_ds->elements,fem_ds->nodes,fem_ds->vertices, fem_ds->loads, fem_ds->materials,fem_ds->parameters,PressureEnum,results->Size()+1,0,1); results->AddObject(result);
     200                }
     201                else{
     202                        if(ismacayealpattyn){
     203                                InputToResultx(&result,fem_dh->elements,fem_dh->nodes,fem_dh->vertices, fem_dh->loads, fem_dh->materials,fem_dh->parameters,VxEnum,results->Size()+1,0,1); results->AddObject(result);
     204                                InputToResultx(&result,fem_dh->elements,fem_dh->nodes,fem_dh->vertices, fem_dh->loads, fem_dh->materials,fem_dh->parameters,VyEnum,results->Size()+1,0,1); results->AddObject(result);
     205                                InputToResultx(&result,fem_dh->elements,fem_dh->nodes,fem_dh->vertices, fem_dh->loads, fem_dh->materials,fem_dh->parameters,VzEnum,results->Size()+1,0,1); results->AddObject(result);
     206                                InputToResultx(&result,fem_dh->elements,fem_dh->nodes,fem_dh->vertices, fem_dh->loads, fem_dh->materials,fem_dh->parameters,PressureEnum,results->Size()+1,0,1); results->AddObject(result);
     207                        }
     208                        else{
     209                                InputToResultx(&result,fem_dhu->elements,fem_dhu->nodes,fem_dhu->vertices, fem_dhu->loads, fem_dhu->materials,fem_dhu->parameters,VxEnum,results->Size()+1,0,1); results->AddObject(result);
     210                                InputToResultx(&result,fem_dhu->elements,fem_dhu->nodes,fem_dhu->vertices, fem_dhu->loads, fem_dhu->materials,fem_dhu->parameters,VyEnum,results->Size()+1,0,1); results->AddObject(result);
     211                                InputToResultx(&result,fem_dhu->elements,fem_dhu->nodes,fem_dhu->vertices, fem_dhu->loads, fem_dhu->materials,fem_dhu->parameters,VzEnum,results->Size()+1,0,1); results->AddObject(result);
     212                                InputToResultx(&result,fem_dhu->elements,fem_dhu->nodes,fem_dhu->vertices, fem_dhu->loads, fem_dhu->materials,fem_dhu->parameters,PressureEnum,results->Size()+1,0,1); results->AddObject(result);
     213                        }
     214
     215                }
     216        }
     217       
     218        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(DiagnosticAnalysisEnum)));
    188219
    189220        /*output if we have rifts: */
    190221        if(numrifts){
    191222                OutputRiftsx( &riftproperties,fem_dh->loads,numrifts);
    192                 result=new Result(results->Size()+1,0,1,"riftproperties",riftproperties);
    193                 results->AddObject(result);
     223                results->AddObject(new Result(results->Size()+1,0,1,"riftproperties",riftproperties));
    194224        }
    195225
  • issm/trunk/src/c/solutions/gradjcompute_core.cpp

    r3913 r3938  
    1313#endif
    1414
    15 DataSet* gradjcompute_core(Model* model){
     15Results* gradjcompute_core(Model* model){
    1616       
    1717       
    1818        /*intermediary: */
    1919        FemModel* femmodel=NULL;
    20         DataSet* diagnostic_results=NULL;
     20        Results* diagnostic_results=NULL;
    2121        int analysis_type;
    2222        int sub_analysis_type;
     
    4545       
    4646        /*output: */
    47         DataSet* results=NULL;
    48         Result* result=NULL;
     47        Results* results=NULL;
    4948
    5049        /*flags: */
     
    5453
    5554        //initialize results
    56         results=new DataSet(ResultsEnum);
     55        results=new Results();
    5756       
    5857        /*some parameters:*/
     
    118117
    119118        /*Plug results into output dataset: */
    120         result=new Result(results->Size()+1,0,1,"grad_g",grad_g);
    121         results->AddObject(result);
    122         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(GradientAnalysisEnum));
    123         results->AddObject(result);
     119        results->AddObject(new Result(results->Size()+1,0,1,"grad_g",grad_g));
     120        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(GradientAnalysisEnum)));
    124121       
    125122        /*Free ressources:*/
  • issm/trunk/src/c/solutions/objectivefunctionC.cpp

    r3922 r3938  
    2323        Model*    model=NULL;
    2424        FemModel* femmodel=NULL;
    25         DataSet* diagnostic_results=NULL;
     25        Results* diagnostic_results=NULL;
    2626        double* param_g=NULL;
    2727        double* grad_g=NULL;
     
    5151        int     dt=0;
    5252        int     isstokes=0;
    53         DataSet* results_steadystate=NULL;
     53        Results* results_steadystate=NULL;
    5454        int dofs01[2]={0,1};
    5555        double* dofset=NULL;
  • issm/trunk/src/c/solutions/prognostic.cpp

    r3913 r3938  
    3232
    3333        /*Results: */
    34         DataSet* results=NULL;
    35         DataSet* processedresults=NULL;
    36         Result*  result=NULL;
     34        Results* results=NULL;
    3735
    3836        Param*   param=NULL;
     
    103101
    104102               
    105         _printf_("process results:\n");
    106         ProcessResults(&processedresults,results,model,PrognosticAnalysisEnum);
    107        
    108103        _printf_("write results to disk:\n");
    109         OutputResults(processedresults,outputfilename);
     104        OutputResults(results,outputfilename);
    110105
    111106        if (waitonlock>0){
     
    115110
    116111        /*Free ressources:*/
    117         delete processedresults;
    118112        delete results;
    119113        delete model;
  • issm/trunk/src/c/solutions/prognostic2.cpp

    r3913 r3938  
    3232
    3333        /*Results: */
    34         DataSet* results=NULL;
    35         DataSet* processedresults=NULL;
    36         Result*  result=NULL;
     34        Results* results=NULL;
    3735
    3836        Param*   param=NULL;
     
    103101        }
    104102
    105         _printf_("process results:\n");
    106         ProcessResults(&processedresults,results,model,Prognostic2AnalysisEnum);
    107        
    108103        _printf_("write results to disk:\n");
    109         OutputResults(processedresults,outputfilename);
     104        OutputResults(results,outputfilename);
    110105
    111106        if (waitonlock>0){
     
    115110
    116111        /*Free ressources:*/
    117         delete processedresults;
    118112        delete results;
    119113        delete model;
  • issm/trunk/src/c/solutions/prognostic2_core.cpp

    r3913 r3938  
    1010#include "../modules/modules.h"
    1111
    12 DataSet* prognostic2_core(Model* model){
     12Results* prognostic2_core(Model* model){
    1313
    1414        extern int my_rank;
    1515
    1616        /*output: */
    17         Result* result=NULL;
    18         DataSet* results=NULL;
     17        Results* results=NULL;
    1918
    2019        /*intermediary: */
     
    3635
    3736        //initialize results:
    38         results=new DataSet(ResultsEnum);
     37        results=new Results();
    3938
    4039        /*recover fem model: */
     
    6059
    6160        /*Plug results into output dataset: */
    62         result=new Result(results->Size()+1,0,1,"h_g",h_g);
    63         results->AddObject(result);
     61        results->AddObject(new Result(results->Size()+1,0,1,"h_g",h_g));
    6462
    6563        /*Free ressources:*/
     
    6967
    7068        /*Add analysis_type to results: */
    71         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(Prognostic2AnalysisEnum));
    72         results->AddObject(result);
     69        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(Prognostic2AnalysisEnum)));
    7370       
    7471        /*return: */
  • issm/trunk/src/c/solutions/prognostic_core.cpp

    r3922 r3938  
    1010#include "../modules/modules.h"
    1111
    12 DataSet* prognostic_core(Model* model){
     12Results* prognostic_core(Model* model){
    1313
    1414        extern int my_rank;
    1515
    1616        /*output: */
    17         DataSet* results=NULL;
    18         Result* result=NULL;
     17        Results* results=NULL;
     18        Result*  result=NULL;
    1919
    2020        /*solutions: */
     
    2828
    2929        //initialize results
    30         results=new DataSet(ResultsEnum);
     30        results=new Results();
    3131
    3232        /*recover fem model: */
     
    5454
    5555        /*Add analysis_type to results: */
    56         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(PrognosticAnalysisEnum));
    57         results->AddObject(result);
     56        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(PrognosticAnalysisEnum)));
    5857
    5958        /*Free ressources:*/
  • issm/trunk/src/c/solutions/slopecompute.cpp

    r3895 r3938  
    1414#include "../EnumDefinitions/EnumDefinitions.h"
    1515#include "../include/include.h"
     16#include "../modules/modules.h"
    1617#include "./solutions.h"
    1718
     
    3031
    3132        /*Results: */
    32         DataSet* results=NULL;
    33         DataSet* processedresults=NULL;
    34         Result*  result=NULL;
     33        Results* results=NULL;
    3534
    3635        Param*   param=NULL;
     
    8483        MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
    8584
    86         _printf_("process results:\n");
    87         ProcessResults(&processedresults,results,model,SlopecomputeAnalysisEnum);
    88        
    8985        _printf_("write results to disk:\n");
    90         OutputResults(processedresults,outputfilename);
     86        OutputResults(results,outputfilename);
    9187
    9288        if (waitonlock>0){
     
    9692
    9793        /*Free ressources:*/
    98         delete processedresults;
    9994        delete results;
    10095        delete model;
  • issm/trunk/src/c/solutions/slopecompute_core.cpp

    r3913 r3938  
    1010#include "../modules/modules.h"
    1111
    12 DataSet* slopecompute_core(Model* model){
     12Results* slopecompute_core(Model* model){
    1313
    1414        extern int my_rank;
    1515
    1616        /*output: */
    17         DataSet* results=NULL;
    18         Result* result=NULL;
     17        Results* results=NULL;
    1918
    2019        /*solutions: */
     
    3231
    3332        //initialize results
    34         results=new DataSet(ResultsEnum);
     33        results=new Results();
    3534
    3635        /*recover fem model: */
     
    5150
    5251        /*Plug results into output dataset: */
    53         result=new Result(results->Size()+1,0,1,"sx_g",sx_g);
    54         results->AddObject(result);
    55         result=new Result(results->Size()+1,0,1,"sy_g",sy_g);
    56         results->AddObject(result);
    57         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(SlopecomputeAnalysisEnum));
    58         results->AddObject(result);
     52        results->AddObject(new Result(results->Size()+1,0,1,"sx_g",sx_g));
     53        results->AddObject(new Result(results->Size()+1,0,1,"sy_g",sy_g));
     54        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(SlopecomputeAnalysisEnum)));
    5955
    6056
  • issm/trunk/src/c/solutions/solutions.h

    r3895 r3938  
    1313
    1414/*cores: */
    15 DataSet* gradjcompute_core(Model* model);
    16 DataSet* diagnostic_core(Model* model);
    17 DataSet* prognostic_core(Model* model);
    18 DataSet* prognostic2_core(Model* model);
    19 DataSet* balancedthickness_core(Model* model);
    20 DataSet* balancedthickness2_core(Model* model);
    21 DataSet* balancedvelocities_core(Model* model);
    22 DataSet* slopecompute_core(Model* model);
    23 DataSet* control_core(Model* model);
    24 DataSet* steadystate_core(Model* model);
    25 DataSet* transient_core(Model* model);
    26 DataSet* transient_core_2d(Model* model);
    27 DataSet* transient_core_3d(Model* model);
    28 DataSet* thermal_core(Model* model);
     15Results* gradjcompute_core(Model* model);
     16Results* diagnostic_core(Model* model);
     17Results* prognostic_core(Model* model);
     18Results* prognostic2_core(Model* model);
     19Results* balancedthickness_core(Model* model);
     20Results* balancedthickness2_core(Model* model);
     21Results* balancedvelocities_core(Model* model);
     22Results* slopecompute_core(Model* model);
     23Results* control_core(Model* model);
     24Results* steadystate_core(Model* model);
     25Results* transient_core(Model* model);
     26Results* transient_core_2d(Model* model);
     27Results* transient_core_3d(Model* model);
     28Results* thermal_core(Model* model);
    2929
    3030/*computational cores: */
     
    5151
    5252//int ParameterUpdate(double* search_vector,int step, WorkspaceParams* workspaceparams,BatchParams* batchparams);
    53 void OutputResults(DataSet* results,char* filename);
    5453void WriteLockFile(char* filename);
    5554
     
    5958void CreateFemModel(FemModel* femmodel,ConstDataHandle MODEL,int analysis_type,int sub_analysis_type);
    6059//int BatchDebug(Mat* Kgg,Vec* pg,FemModel* femmodel,char* filename);
    61 void ProcessResults(DataSet** pnewresults, DataSet* results,Model* model,int analysis_type);
    6260
    6361#endif
  • issm/trunk/src/c/solutions/steadystate.cpp

    r3913 r3938  
    3535
    3636        /*Results: */
    37         DataSet* results=NULL;
    38         DataSet* processed_results=NULL;
    39         Result* result=NULL;
     37        Results* results=NULL;
    4038       
    4139        bool waitonlock=false;
     
    118116                        MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
    119117
    120                         _printf_("process results:\n");
    121                         ProcessResults(&processed_results,results,model,SteadystateAnalysisEnum);
    122118                }
    123119                else{
     
    135131                        MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
    136132
    137                         _printf_("process results:\n");
    138                         ProcessResults(&processed_results,results,model,ControlAnalysisEnum);
    139133                }
    140134
    141135                _printf_("write results to disk:\n");
    142                 OutputResults(processed_results,outputfilename);
     136                OutputResults(results,outputfilename);
    143137        }
    144138        else{
     
    166160        delete model;
    167161        delete results;
    168         delete processed_results;
    169162
    170163        /*Get finish time and close*/
  • issm/trunk/src/c/solutions/steadystate_core.cpp

    r3913 r3938  
    1010#include "../modules/modules.h"
    1111
    12 DataSet* steadystate_core(Model* model){
     12Results* steadystate_core(Model* model){
    1313
    1414        extern int my_rank;
     
    2424
    2525        /*output: */
    26         Result* result=NULL;
    27         DataSet* results=NULL;
    28         DataSet* results_thermal=NULL;
    29         DataSet* results_diagnostic=NULL;
     26        Results* results=NULL;
     27        Results* results_thermal=NULL;
     28        Results* results_diagnostic=NULL;
    3029
    3130        /*solutions: */
     
    128127
    129128        /*Plug results into output dataset: */
    130         result=new Result(results->Size()+1,0,1,"u_g",u_g);
    131         results->AddObject(result);
    132         result=new Result(results->Size()+1,0,1,"p_g",p_g);
    133         results->AddObject(result);
    134         result=new Result(results->Size()+1,0,1,"t_g",t_g);
    135         results->AddObject(result);
    136         result=new Result(results->Size()+1,0,1,"m_g",m_g);
    137         results->AddObject(result);
    138         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(SteadyAnalysisEnum));
    139         results->AddObject(result);
     129        results->AddObject(new Result(results->Size()+1,0,1,"u_g",u_g));
     130        results->AddObject(new Result(results->Size()+1,0,1,"p_g",p_g));
     131        results->AddObject(new Result(results->Size()+1,0,1,"t_g",t_g));
     132        results->AddObject(new Result(results->Size()+1,0,1,"m_g",m_g));
     133        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(SteadyAnalysisEnum)));
    140134
    141135
  • issm/trunk/src/c/solutions/thermal.cpp

    r3913 r3938  
    3434
    3535        /*Results: */
    36         DataSet* results=NULL;
    37         DataSet* processed_results=NULL;
    38         Result*  result=NULL;
     36        Results* results=NULL;
    3937       
    4038        Param*           param=NULL;
     
    9290                MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
    9391
    94                 _printf_("process results:\n");
    95                 ProcessResults(&processed_results,results,model,ThermalAnalysisEnum);
    96                
    9792                _printf_("write results to disk:\n");
    98                 OutputResults(processed_results,outputfilename);
     93                OutputResults(results,outputfilename);
    9994        }
    10095        else{
     
    119114        delete model;
    120115        delete results;
    121         delete processed_results;
    122116
    123117        /*Get finish time and close*/
  • issm/trunk/src/c/solutions/thermal_core.cpp

    r3922 r3938  
    1010#include "../modules/modules.h"
    1111
    12 DataSet* thermal_core(Model* model){
     12Results* thermal_core(Model* model){
    1313
    1414        extern int my_rank;
     
    2020
    2121        /*output: */
    22         DataSet* results=NULL;
    23         Result* result=NULL;
     22        Results* results=NULL;
    2423
    2524        /*solutions vectors: */
     
    4645
    4746        //initialize results
    48         results=new DataSet(ResultsEnum);
     47        results=new Results();
    4948
    5049        /*recover fem models: */
     
    101100        /*Plug results into output dataset: */
    102101        if(dt==0){
    103                 result=new Result(results->Size()+1,0,1,"t_g",t_g[0]);
    104                 results->AddObject(result);
    105                
    106                 result=new Result(results->Size()+1,0,1,"m_g",m_g[0]);
    107                 results->AddObject(result);
     102                results->AddObject(new Result(results->Size()+1,0,1,"t_g",t_g[0]));
     103                results->AddObject(new Result(results->Size()+1,0,1,"m_g",m_g[0]));
    108104
    109105                /*free ressource*/
     
    113109        else{
    114110                for(i=0;i<nsteps;i++){
    115                         result=new Result(results->Size()+1,time[i],i+1,"t_g",t_g[i]);
    116                         results->AddObject(result);
    117 
    118                         result=new Result(results->Size()+1,time[i],i+1,"m_g",m_g[i]);
    119                         results->AddObject(result);
     111                        results->AddObject(new Result(results->Size()+1,time[i],i+1,"t_g",t_g[i]));
     112                        results->AddObject(new Result(results->Size()+1,time[i],i+1,"m_g",m_g[i]));
    120113
    121114                        /*free ressource*/
     
    125118        }
    126119        /*Add analysis_type to results: */
    127         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(ThermalAnalysisEnum));
    128         results->AddObject(result);
     120        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(ThermalAnalysisEnum)));
    129121
    130122        /*free ressource*/
  • issm/trunk/src/c/solutions/transient.cpp

    r3913 r3938  
    3333
    3434        /*Results: */
    35         DataSet* results=NULL;
    36         DataSet* processed_results=NULL;
    37         Result*  result=NULL;
     35        Results* results=NULL;
    3836       
    3937        Param*  param=NULL;
     
    113111                MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
    114112       
    115                 _printf_("process results:\n");
    116                 ProcessResults(&processed_results,results,model,TransientAnalysisEnum);
    117                
    118113                _printf_("write results to disk:\n");
    119                 OutputResults(processed_results,outputfilename);
     114                OutputResults(results,outputfilename);
    120115        }
    121116        else{
     
    139134        /*Free ressources:*/
    140135        delete results;
    141         delete processed_results;
    142136        delete model;
    143137
  • issm/trunk/src/c/solutions/transient_core.cpp

    r3913 r3938  
    1010#include "../modules/modules.h"
    1111
    12 DataSet* transient_core(Model* model){
     12Results* transient_core(Model* model){
    1313
    1414        int dim=-1;
    15         DataSet* results=NULL;
     15        Results* results=NULL;
    1616
    1717        //first recover parameters common to all solutions
  • issm/trunk/src/c/solutions/transient_core_2d.cpp

    r3913 r3938  
    1010#include "../modules/modules.h"
    1111
    12 DataSet* transient_core_2d(Model* model){
     12Results* transient_core_2d(Model* model){
    1313
    1414        extern int my_rank;
     
    2323
    2424        /*output: */
    25         DataSet* results=NULL;
    26         Result* result=NULL;
     25        Results* results=NULL;
    2726
    2827        /*solutions: */
     
    4544        double finaltime;
    4645        double dt;
    47         DataSet* diagnostic_results=NULL;
    48         DataSet* prognostic_results=NULL;
     46        Results* diagnostic_results=NULL;
     47        Results* prognostic_results=NULL;
    4948
    5049
     
    6059
    6160        //initialize results
    62         results=new DataSet(ResultsEnum);
     61        results=new Results();
    6362
    6463        /*recover fem models: */
     
    121120
    122121                //plug into results.
    123                 result=new Result(results->Size()+1,time,step,"u_g",u_g); results->AddObject(result);
    124                 result=new Result(results->Size()+1,time,step,"p_g",p_g); results->AddObject(result);
    125                 result=new Result(results->Size()+1,time,step,"h_g",h_g); results->AddObject(result);
    126                 result=new Result(results->Size()+1,time,step,"s_g",s_g); results->AddObject(result);
    127                 result=new Result(results->Size()+1,time,step,"b_g",b_g); results->AddObject(result);
     122                results->AddObject(new Result(results->Size()+1,time,step,"u_g",u_g));
     123                results->AddObject(new Result(results->Size()+1,time,step,"p_g",p_g));
     124                results->AddObject(new Result(results->Size()+1,time,step,"h_g",h_g));
     125                results->AddObject(new Result(results->Size()+1,time,step,"s_g",s_g));
     126                results->AddObject(new Result(results->Size()+1,time,step,"b_g",b_g));
    128127
    129128                //update inputs
     
    139138
    140139        /*Add analysis_type to results: */
    141         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(TransientAnalysisEnum));
    142         results->AddObject(result);
     140        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(TransientAnalysisEnum)));
    143141
    144142        /*Free ressources:*/
  • issm/trunk/src/c/solutions/transient_core_3d.cpp

    r3913 r3938  
    1010#include "../modules/modules.h"
    1111
    12 DataSet* transient_core_3d(Model* model){
     12Results* transient_core_3d(Model* model){
    1313
    1414        extern int my_rank;
     
    2525
    2626        /*output: */
    27         DataSet* results=NULL;
    28         Result* result=NULL;
     27        Results* results=NULL;
    2928
    3029        /*solutions: */
     
    5049        double finaltime;
    5150        double dt;
    52         DataSet* diagnostic_results=NULL;
    53         DataSet* prognostic_results=NULL;
     51        Results* diagnostic_results=NULL;
     52        Results* prognostic_results=NULL;
    5453
    5554
     
    6564
    6665        //initialize results
    67         results=new DataSet(ResultsEnum);
     66        results=new Results();
    6867
    6968        /*recover fem models: */
     
    149148
    150149                //plug into results.
    151                 result=new Result(results->Size()+1,time,step,"u_g",u_g); results->AddObject(result);
    152                 result=new Result(results->Size()+1,time,step,"p_g",p_g); results->AddObject(result);
    153                 result=new Result(results->Size()+1,time,step,"h_g",h_g); results->AddObject(result);
    154                 result=new Result(results->Size()+1,time,step,"s_g",s_g); results->AddObject(result);
    155                 result=new Result(results->Size()+1,time,step,"b_g",b_g); results->AddObject(result);
    156                 result=new Result(results->Size()+1,time,step,"t_g",t_g); results->AddObject(result);
    157                 result=new Result(results->Size()+1,time,step,"m_g",m_g); results->AddObject(result);
     150                results->AddObject(new Result(results->Size()+1,time,step,"u_g",u_g));
     151                results->AddObject(new Result(results->Size()+1,time,step,"p_g",p_g));
     152                results->AddObject(new Result(results->Size()+1,time,step,"h_g",h_g));
     153                results->AddObject(new Result(results->Size()+1,time,step,"s_g",s_g));
     154                results->AddObject(new Result(results->Size()+1,time,step,"b_g",b_g));
     155                results->AddObject(new Result(results->Size()+1,time,step,"t_g",t_g));
     156                results->AddObject(new Result(results->Size()+1,time,step,"m_g",m_g));
    158157
    159158                //update inputs
     
    175174                        _printf_("%s","      saving temporary results...");
    176175
    177                         DataSet* processed_results=NULL;
    178176                        char*    outputfilename=NULL;
    179177
    180178                        model->FindParam(&outputfilename,OutputFileNameEnum);
    181                         ProcessResults(&processed_results,results,model,TransientAnalysisEnum);
    182                         OutputResults(processed_results,outputfilename);
    183 
    184                         delete processed_results;
     179                        OutputResults(results,outputfilename);
     180
    185181                        xfree((void**)&outputfilename);
    186182
     
    190186
    191187        /*Add analysis_type to results: */
    192         result=new Result(results->Size()+1,0,1,"analysis_type",EnumAsString(TransientAnalysisEnum));
    193         results->AddObject(result);
     188        results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(TransientAnalysisEnum)));
    194189
    195190
Note: See TracChangeset for help on using the changeset viewer.