source: issm/trunk/src/c/objects/Params/PetscVecParam.h@ 9356

Last change on this file since 9356 was 9356, checked in by Eric.Larour, 14 years ago

Major rewrite of the code so that IoModel now has a parameters dataset, which gets
loaded with all the int,char and double objects in the input file.
This is a lot more flexible, as anyone can add a field to the model, and it will
automatically appear in the IoModel parameters dataset.

Not debugged with respect to nightly runs yet. Trying to get the whole change finished.

File size: 4.7 KB
RevLine 
[3683]1/*! \file PetscVecParam.h
2 * \brief: header file for triavertexinput object
3 */
4
5
6#ifndef _PETSCVECPARAM_H_
7#define _PETSCVECPARAM_H_
8
9/*Headers:*/
10/*{{{1*/
[3715]11#ifdef HAVE_CONFIG_H
[9320]12 #include <config.h>
[3715]13#else
14#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
15#endif
16
17#ifdef _SERIAL_
18#include <mex.h>
19#endif
20
[3683]21#include "./Param.h"
[3775]22#include "../../include/include.h"
[3683]23#include "../../shared/shared.h"
24/*}}}*/
25
26class PetscVecParam: public Param{
27
28 private:
29 /*just hold 3 values for 3 vertices: */
30 int enum_type;
31 Vec value;
32
33 public:
[4248]34 /*PetscVecParam constructors, destructors: {{{1*/
[3683]35 PetscVecParam();
36 PetscVecParam(int enum_type,Vec value);
37 ~PetscVecParam();
38 /*}}}*/
[4248]39 /*Object virtual functions definitions:{{{1 */
40 void Echo();
[3683]41 void DeepEcho();
[4248]42 int Id();
43 int MyRank();
44 void Marshall(char** pmarshalled_dataset);
45 int MarshallSize();
[3683]46 void Demarshall(char** pmarshalled_dataset);
47 int Enum();
[4248]48 Object* copy();
[3683]49 /*}}}*/
[4248]50 /*Param vritual function definitions: {{{1*/
[3683]51 int EnumType(){return enum_type;}
[8224]52 void GetParameterValue(bool* pbool){_error_("PetscVec param of enum %i (%s) cannot return a bool",enum_type,EnumToStringx(enum_type));}
53 void GetParameterValue(int* pinteger){_error_("PetscVec param of enum %i (%s) cannot return an integer",enum_type,EnumToStringx(enum_type));}
54 void GetParameterValue(int** pintarray,int* pM){_error_("PetscVec param of enum %i (%s) cannot return an array of integers",enum_type,EnumToStringx(enum_type));}
[8600]55 void GetParameterValue(int** pintarray,int* pM,int* pN){_error_("PetscVec param of enum %i (%s) cannot return an array of integers",enum_type,EnumToStringx(enum_type));}
[8224]56 void GetParameterValue(double* pdouble){_error_("PetscVec param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
57 void GetParameterValue(char** pstring){_error_("PetscVec param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
58 void GetParameterValue(char*** pstringarray,int* pM){_error_("PetscVec param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));}
59 void GetParameterValue(double** pdoublearray,int* pM){_error_("PetscVec param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
60 void GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("PetscVec param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));}
61 void GetParameterValue(double*** parray, int* pM,int** pmdims, int** pndims){_error_("PetscVec param of enum %i (%s) cannot return a matrix array",enum_type,EnumToStringx(enum_type));}
62 void GetParameterValue(Mat* pmat){_error_("PetscVec param of enum %i (%s) cannot return a Mat",enum_type,EnumToStringx(enum_type));}
[3683]63 void GetParameterValue(Vec* poutput);
[8224]64 void GetParameterValue(FILE** pfid){_error_("PetscVec of enum %i (%s) cannot return a FILE",enum_type,EnumToStringx(enum_type));}
[4059]65
[8224]66 void SetValue(bool boolean){_error_("PetscVec of enum %i (%s) cannot hold a boolean",enum_type,EnumToStringx(enum_type));}
67 void SetValue(int integer){_error_("PetscVec of enum %i (%s) cannot hold an integer",enum_type,EnumToStringx(enum_type));}
68 void SetValue(double scalar){_error_("PetscVec of enum %i (%s) cannot hold a scalar",enum_type,EnumToStringx(enum_type));}
69 void SetValue(char* string){_error_("PetscVec of enum %i (%s) cannot hold a string",enum_type,EnumToStringx(enum_type));}
70 void SetValue(char** stringarray,int M){_error_("PetscVec of enum %i (%s) cannot hold a string array",enum_type,EnumToStringx(enum_type));}
71 void SetValue(double* doublearray,int M){_error_("PetscVec of enum %i (%s) cannot hold a double array",enum_type,EnumToStringx(enum_type));}
72 void SetValue(double* pdoublearray,int M,int N){_error_("PetscVec of enum %i (%s) cannot hold a double array",enum_type,EnumToStringx(enum_type));}
[8600]73 void SetValue(int* intarray,int M){_error_("PetscVec of enum %i (%s) cannot hold a int array",enum_type,EnumToStringx(enum_type));}
74 void SetValue(int* pintarray,int M,int N){_error_("PetscVec of enum %i (%s) cannot hold a int array",enum_type,EnumToStringx(enum_type));}
[4059]75 void SetValue(Vec vec);
[8224]76 void SetValue(Mat mat){_error_("PetscVec of enum %i (%s) cannot hold a Mat",enum_type,EnumToStringx(enum_type));}
77 void SetValue(FILE* fid){_error_("PetscVec of enum %i (%s) cannot hold a FILE",enum_type,EnumToStringx(enum_type));}
78 void SetValue(double** array, int M, int* mdim_array, int* ndim_array){_error_("PetscVec param of enum %i (%s) cannot hold an array of matrices",enum_type,EnumToStringx(enum_type));}
[9356]79 void UnitConversion(int direction_enum);
[4059]80
[3683]81 char* GetParameterName(void);
[3715]82 #ifdef _SERIAL_
[3683]83 void SetMatlabField(mxArray* dataref);
[3715]84 #endif
85
[3683]86 /*}}}*/
87};
88#endif /* _PETSCVECPARAM_H */
Note: See TracBrowser for help on using the repository browser.