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

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

marshall.m is now automatically feedding off of model template for each field.
this necessitated a rewrite of the ModelProcessorx, so that instead of processing
strings, it processes now enums.

File size: 4.9 KB
RevLine 
[3683]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;
[4039]17class Patch;
[3683]18
19#include "../../toolkits/toolkits.h"
20/*}}}*/
21
[4244]22class Element: public Object,public Update{
[3683]23
24 public:
25
26 virtual ~Element(){};
[4248]27
[4218]28 virtual void Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters)=0;
[4575]29 virtual void SetCurrentConfiguration(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters)=0;
[8800]30 virtual void CreateKMatrix(Mat Kff, Mat Kfs,Vec df)=0;
31 virtual void CreatePVector(Vec pf)=0;
[4043]32 virtual void GetSolutionFromInputs(Vec solution)=0;
[5719]33 virtual int GetNodeIndex(Node* node)=0;
[7089]34 virtual int Sid()=0;
[5745]35 virtual bool IsOnShelf()=0;
[7089]36 virtual bool IsNodeOnShelf()=0;
[7323]37 virtual bool IsNodeOnShelfFromFlags(double* flags)=0;
[5745]38 virtual bool IsOnBed()=0;
[5633]39 virtual void GetParameterListOnVertices(double* pvalue,int enumtype)=0;
40 virtual void GetParameterListOnVertices(double* pvalue,int enumtype,double defaultvalue)=0;
[4942]41 virtual void GetParameterValue(double* pvalue,Node* node,int enumtype)=0;
[4055]42 virtual void Gradj(Vec gradient,int control_type)=0;
[8607]43 virtual double ThicknessAbsMisfit(bool process_units ,int weight_index)=0;
44 virtual double SurfaceAbsVelMisfit(bool process_units ,int weight_index)=0;
45 virtual double SurfaceRelVelMisfit(bool process_units ,int weight_index)=0;
46 virtual double SurfaceLogVelMisfit(bool process_units ,int weight_index)=0;
47 virtual double SurfaceLogVxVyMisfit(bool process_units,int weight_index)=0;
48 virtual double SurfaceAverageVelMisfit(bool process_units,int weight_index)=0;
[8608]49 virtual double ThicknessAbsGradient(bool process_units,int weight_index)=0;
50 virtual double RheologyBbarAbsGradient(bool process_units,int weight_index)=0;
51 virtual double DragCoefficientAbsGradient(bool process_units,int weight_index)=0;
[4043]52 virtual double SurfaceArea(void)=0;
[4931]53 virtual void InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum)=0;
[4043]54 virtual void ComputeBasalStress(Vec sigma_b)=0;
55 virtual void ComputeStrainRate(Vec eps)=0;
[4974]56 virtual double MassFlux(double* segment,bool process_units)=0;
[4039]57 virtual void PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes)=0;
58 virtual void PatchFill(int* pcount, Patch* patch)=0;
[4873]59 virtual void DeleteResults(void)=0;
[4025]60 virtual void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type)=0;
[4039]61 virtual void InputToResult(int enum_type,int step,double time)=0;
[6200]62 virtual void ControlInputGetGradient(Vec gradient,int enum_type)=0;
63 virtual void ControlInputSetGradient(double* gradient,int enum_type)=0;
[6238]64 virtual void ControlInputScaleGradient(int enum_type, double scale)=0;
[4039]65 virtual void ProcessResultsUnits(void)=0;
[4042]66 virtual void MinVel(double* pminvel, bool process_units)=0;
67 virtual void MaxVel(double* pmaxvel, bool process_units)=0;
[4043]68 virtual void MinVx(double* pminvx, bool process_units)=0;
69 virtual void MaxVx(double* pmaxvx, bool process_units)=0;
70 virtual void MaxAbsVx(double* pmaxabsvx, bool process_units)=0;
71 virtual void MinVy(double* pminvy, bool process_units)=0;
72 virtual void MaxVy(double* pmaxvy, bool process_units)=0;
73 virtual void MaxAbsVy(double* pmaxabsvy, bool process_units)=0;
74 virtual void MinVz(double* pminvz, bool process_units)=0;
75 virtual void MaxVz(double* pmaxvz, bool process_units)=0;
76 virtual void MaxAbsVz(double* pmaxabsvz, bool process_units)=0;
[4063]77 virtual void InputDuplicate(int original_enum,int new_enum)=0;
[4076]78 virtual void InputScale(int enum_type,double scale_factor)=0;
[4048]79 virtual void GetVectorFromInputs(Vec vector,int NameEnum)=0;
[4967]80 virtual void InputControlUpdate(double scalar,bool save_parameter)=0;
[5578]81 virtual void InputArtificialNoise(int enum_type,double min,double max)=0;
[4880]82 virtual bool InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0;
[5518]83 virtual void AverageOntoPartition(Vec partition_contributions,Vec partition_areas,double* vertex_response,double* qmu_part)=0;
[7089]84 virtual int* GetHorizontalNeighboorSids(void)=0;
[6130]85 virtual double TimeAdapt()=0;
[7319]86 virtual void AgressiveMigration()=0;
[7323]87 virtual void SoftMigration(double* sheet_ungrounding)=0;
88 virtual void ShelfSync()=0;
89 virtual void PotentialSheetUngrounding(Vec potential_sheet_ungrounding)=0;
[7089]90 virtual void MigrateGroundingLine()=0;
[7288]91 virtual int UpdateShelfStatus(Vec new_shelf_nodes)=0;
92 virtual void UpdateShelfFlags(double* new_shelf_nodes)=0;
[7323]93 virtual int UpdatePotentialSheetUngrounding(double* potential_sheet_ungrounding,Vec vec_nodes_on_iceshelf,double* nodes_on_iceshelf)=0;
[4055]94
[3683]95 /*Implementation: */
96
97};
98#endif
Note: See TracBrowser for help on using the repository browser.