source: issm/trunk/src/c/objects/Elements/Element.h@ 4037

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

New results framework. Now, elements have results datasets,
which they fill up as they wish with results found in the inputs.
Then, the results dataset will be processed in OutputResults, to output
something to disk. We ended up putting the results inside the elements,
because they depend on the interpolation, this avoids partitioning of vectors,
and inputs cannot hold different time steps for the same enum!

File size: 2.4 KB
Line 
1/*!\file: Element.h
2 * \brief abstract class for Element object
3 * This class is a place holder for the Tria and the Penta elements.
4 * It is derived from Element, so DataSets can contain them.
5 */
6
7
8#ifndef _ELEMENT_H_
9#define _ELEMENT_H_
10
11/*Headers:*/
12/*{{{1*/
13#include "../Object.h"
14
15class DataSet;
16class Parameters;
17
18#include "../../toolkits/toolkits.h"
19/*}}}*/
20
21class Element: public Object{
22
23 public:
24
25 virtual ~Element(){};
26 virtual void Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters)=0;
27
28 virtual void CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type)=0;
29 virtual void CreatePVector(Vec pg, int analysis_type,int sub_analysis_type)=0;
30 virtual void GetSolutionFromInputs(Vec solution, int analysis_type,int sub_analysis_type)=0;
31 virtual void GetNodes(void** nodes)=0;
32 virtual void* GetMatPar()=0;
33 virtual bool GetShelf()=0;
34 virtual bool GetOnBed()=0;
35 virtual void GetThicknessList(double* thickness_list)=0;
36 virtual void GetBedList(double* bed_list)=0;
37 virtual void Du(Vec du_g,int analysis_type,int sub_analysis_type)=0;
38 virtual void Gradj(Vec grad_g,int analysis_type,int sub_analysis_type,int control_type)=0;
39 virtual void GradjDrag(Vec grad_g,int analysis_type,int sub_analysis_type)=0;
40 virtual void GradjB(Vec grad_g,int analysis_type,int sub_analysis_type)=0;
41 virtual double Misfit(int analysis_type,int sub_analysis_type)=0;
42 virtual double CostFunction(int analysis_type,int sub_analysis_type)=0;
43 virtual double SurfaceArea(int analysis_type,int sub_analysis_type)=0;
44 virtual void DepthAverageInputAtBase(int enum_type)=0;
45 virtual void ComputeBasalStress(Vec sigma_b,int analysis_type,int sub_analysis_type)=0;
46 virtual void ComputePressure(Vec p_g, int analysis_type,int sub_analysis_type)=0;
47 virtual void ComputeStrainRate(Vec eps, int analysis_type,int sub_analysis_type)=0;
48 virtual double MassFlux(double* segment,double* ug)=0;
49 virtual void PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes,int enum_type)=0;
50 virtual void PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type)=0;
51 virtual void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type)=0;
52 virtual void InputToResult(int enum_type,int step,double time);
53
54 /*Implementation: */
55
56};
57#endif
Note: See TracBrowser for help on using the repository browser.