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

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

Keep simplifying solutions.
New convergence module at the input level, instead at the solution level, when solution vectors are not
available anymore.

File size: 3.1 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;
17class Patch;
18
19#include "../../toolkits/toolkits.h"
20/*}}}*/
21
22class Element: public Object{
23
24 public:
25
26 virtual ~Element(){};
27 virtual void Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters)=0;
28
29 virtual void CreateKMatrix(Mat Kgg)=0;
30 virtual void CreatePVector(Vec pg)=0;
31 virtual void GetSolutionFromInputs(Vec solution)=0;
32 virtual void GetNodes(void** nodes)=0;
33 virtual void* GetMatPar()=0;
34 virtual bool GetShelf()=0;
35 virtual bool GetOnBed()=0;
36 virtual void GetThicknessList(double* thickness_list)=0;
37 virtual void GetBedList(double* bed_list)=0;
38 virtual void Du(Vec du_g)=0;
39 virtual void Gradj(Vec gradient,int control_type)=0;
40 virtual void GradjDrag(Vec gradient)=0;
41 virtual void GradjB(Vec gradient)=0;
42 virtual double Misfit(void)=0;
43 virtual double CostFunction(void)=0;
44 virtual double SurfaceArea(void)=0;
45 virtual void DepthAverageInputAtBase(int enum_type,int average_enum_type)=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;
50 virtual void PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes)=0;
51 virtual void PatchFill(int* pcount, Patch* patch)=0;
52 virtual void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type)=0;
53 virtual void InputToResult(int enum_type,int step,double time)=0;
54 virtual void ProcessResultsUnits(void)=0;
55 virtual void MinVel(double* pminvel, bool process_units)=0;
56 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 DuplicateInput(int original_enum,int new_enum)=0;
67 virtual void ScaleInput(int enum_type,double scale_factor)=0;
68 virtual void GetVectorFromInputs(Vec vector,int NameEnum)=0;
69 virtual void AXPYInput(int YEnum, double scalar, int XEnum)=0;
70 virtual void ControlConstrainInput(int control_type,double cm_min, double cm_max)=0;
71 virtual void InputConvergence(int* pconverged, double* eps, int* enums,int num_enums,int* criterionenums,double criterionvalues,double* criterionvalues,int num_criterionenums)=0;
72
73 /*Implementation: */
74
75};
76#endif
Note: See TracBrowser for help on using the repository browser.