00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _LEC_H
00023 #define _LEC_H
00024
00025 #include "gbldefs.h"
00026
00027
00028
00029
00030 class cNode;
00031 class cElement;
00032 class cShape;
00033 class cIntPt;
00034 class cVector;
00035
00036
00037
00038
00039
00040
00041
00042
00043 typedef enum _loadelmtype
00044 {
00045 FORCE_UNIFORM,
00046 FORCE_LINEAR,
00047 FORCE_VARIABLE,
00048 MOMENT_UNIFORM,
00049 BEAM_FORCE,
00050 BEAM_UNIFORM,
00051 BEAM_LINEAR,
00052 PLATE_UNIFORM,
00053 SHELL_UNIFORM,
00054 SHELL_DOMAIN,
00055 DOMAIN_UNIFORM
00056 } eLoadElmType;
00057
00058 typedef enum _loaddir
00059 {
00060 GLOBAL_LOAD,
00061 LOCAL_LOAD
00062 } eLoadDir;
00063
00064 typedef enum _loadshp
00065 {
00066 ELEM_LOAD,
00067 POINT_LOAD,
00068 LINE_LOAD,
00069 AREA_LOAD,
00070 VOLUME_LOAD,
00071 DOMAIN_LOAD,
00072 BAR_LOAD,
00073 PLATE_LOAD,
00074 SHELL_LOAD,
00075 SHELL_DOMAIN_LOAD
00076 } eLoadShp;
00077
00078
00079
00080
00081 class cLoadElement
00082 {
00083 private:
00084 static cLoadElement *LecHead;
00085 cLoadElement *next;
00086 cLoadElement *prev;
00087
00088 protected:
00089 static int _iNumLoadElem;
00090 eLoadElmType _eType;
00091 cShape *_pcShp;
00092 cIntPt *_pcIpt;
00093 cElement *_pcElm;
00094
00095 public:
00096 static cLoadElement *ReadAll ( void );
00097 static cLoadElement *GetLecHead ( void ) { return LecHead; }
00098 static void FreeAll ( void );
00099 static int GetNumLoadElem ( void ) { return _iNumLoadElem; }
00100 cLoadElement ( void );
00101 virtual ~cLoadElement ( void );
00102 cLoadElement *GetNext ( void ) { return next; }
00103 cElement *GetElm ( void ) { return _pcElm; }
00104 cShape *GetShp ( void ) { return _pcShp; }
00105 void LocalSys ( sNatCoord *, double ** );
00106 void Assembly ( double *, double * );
00107 void Assembly ( double *, cVector & );
00108 void AddSuppReact ( double );
00109 int ReadElement ( eLoadShp );
00110 int ReadLineShape ( void );
00111 int ReadAreaShape ( void );
00112 int ReadDomainShape ( void );
00113 int ReadElemShape ( void );
00114 int ReadBarShape ( void );
00115 int ReadPlateShape ( void );
00116 int ReadShellShape ( void );
00117 int ReadShellDomain ( void );
00118 int MakeDomainShape ( int );
00119 virtual void EquivForce ( double, double * );
00120 virtual void Free ( void ) { };
00121 virtual void Evaluate ( sNatCoord *, double * ) { };
00122 virtual void LoadVal ( double[], eLoadDir ) { };
00123 virtual void Read ( void ) = 0;
00124
00125 virtual void DsaDerEqForceAm ( sNodeCoord *, double, double * );
00126
00127 private:
00128 static void ProcessLineForceUniform ( void );
00129 static void ProcessLineForceLinear ( void );
00130 static void ProcessLineForceVariable( void );
00131 static void ProcessLineMomentUniform( void );
00132 static void ProcessBeamForce ( void );
00133 static void ProcessBeamUniform ( void );
00134 static void ProcessBeamLinear ( void );
00135 static void ProcessPlFrameUnif ( void );
00136 static void ProcessPlateUniform ( void );
00137 static void ProcessShellUniform ( void );
00138 static void ProcessShellDomain ( void );
00139 static void ProcessDomainUniform ( void );
00140 static void ProcessAreaUniform ( void );
00141 };
00142
00143 #endif