source: issm/trunk-jpl/src/c/classes/Inputs/TetraInput.h@ 19554

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

CHG: finished first prototype implementation of the GEMB model inside the Gembx module of the SurfaceMassBalancex module,
and inside the SMBgemb.m class, as well as the SMBGemb method of the Element.cpp class.
Had to introduce the concept also of a DoubleArrayInput to keep track of the vertical gridded datasets within each element.

File size: 2.9 KB
Line 
1/*! \file TetraInput.h
2 * \brief: header file for TetraInput object
3 */
4
5#ifndef _TETRAINPUT_H_
6#define _TETRAINPUT_H_
7
8/*Headers:*/
9/*{{{*/
10#include "./Input.h"
11#include "../Elements/TetraRef.h"
12class Gauss;
13class Gauss;
14/*}}}*/
15
16class TetraInput: public Input,public TetraRef{
17
18 public:
19 int enum_type;
20 int interpolation_type;
21 IssmDouble* values;
22
23 /*TetraInput constructors, destructors*/
24 TetraInput();
25 TetraInput(int enum_type,IssmDouble* values,int element_type_in);
26 ~TetraInput();
27
28 /*Object virtual functions definitions*/
29 void Echo();
30 void DeepEcho();
31 int Id();
32 int ObjectEnum();
33 Object *copy();
34 void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
35
36 /*TetraInput management:*/
37 int InstanceEnum();
38 Input* SpawnTriaInput(int index1,int index2,int index3);
39 Input* SpawnSegInput(int index1,int index2){_error_("not supported yet");};
40 Input* PointwiseDivide(Input* inputB);
41 Input* PointwiseMin(Input* inputB);
42 Input* PointwiseMax(Input* inputB);
43 int GetResultInterpolation(void);
44 int GetResultNumberOfNodes(void);
45 int GetResultArraySize(void){return 1;};
46 void ResultToPatch(IssmDouble* values,int nodesperelement,int sid);
47 void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
48 void Configure(Parameters* parameters);
49
50 /*numerics*/
51 void GetInputValue(bool* pvalue){_error_("not implemented yet");}
52 void GetInputValue(int* pvalue){_error_("not implemented yet");}
53 void GetInputValue(IssmDouble* pvalue){_error_("not implemented yet");}
54 void GetInputValue(IssmDouble* pvalue,Gauss* gauss);
55 void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
56 void GetInputValue(IssmDouble* pvalue,Gauss* gauss,int index){_error_("not implemented yet");};
57 void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
58 void GetInputAverage(IssmDouble* pvalue);
59 void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes);
60 void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
61 void ChangeEnum(int newenumtype);
62 void SquareMin(IssmDouble* psquaremin,Parameters* parameters);
63 void ConstrainMin(IssmDouble minimum);
64 void Set(IssmDouble setvalue);
65 void Scale(IssmDouble scale_factor);
66 void AXPY(Input* xinput,IssmDouble scalar);
67 void Constrain(IssmDouble cm_min, IssmDouble cm_max);
68 IssmDouble InfinityNorm(void);
69 IssmDouble Max(void);
70 IssmDouble MaxAbs(void);
71 IssmDouble Min(void);
72 IssmDouble MinAbs(void);
73 void Extrude(int start){_error_("not supported yet");};
74 void VerticallyIntegrate(Input* thickness_input){_error_("not supported yet");};
75 void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist);
76
77};
78#endif /* _TETRAINPUT_H */
Note: See TracBrowser for help on using the repository browser.