00001 #ifndef LOADEL_H 00002 #define LOADEL_H 00003 00004 #include <stdio.h> 00005 #include "iotools.h" 00006 #include "alias.h" 00007 #include "vector.h" 00008 00009 /** 00010 Class deals with loads defined on elements. 00011 It contains edge load, surface load and volume load. 00012 00013 Created by JK, 00014 Modified by Tomas Koudelka, 06.2009 00015 */ 00016 class loadel 00017 { 00018 public: 00019 loadel(); 00020 ~loadel(); 00021 /// reads element load from file 00022 long read(XFILE *in); 00023 00024 /// reads element volume load from file 00025 void readvolumeload (XFILE *in); 00026 00027 /// reads element edge load from file 00028 void readedgeload (XFILE *in); 00029 00030 /// reads element surface load from file 00031 void readsurfaceload (XFILE *in); 00032 00033 /// reads element load from the preprocessor file 00034 long read_prep(XFILE *in, long lc, long *slc); 00035 00036 /// prints element load to the file 00037 long print(FILE *out, int ident); 00038 00039 /// computes nodal values from volume load 00040 void volumeload (); 00041 00042 /// computes nodal values from edge load 00043 void edgeload (); 00044 00045 /// computes nodal values from surface load 00046 void surfaceload (); 00047 00048 /// merges element load defined by lel 00049 long merge(loadel &lel); 00050 00051 /// sets load type depending on allocated arrays nodval{e|s|v} 00052 void set_load_type(); 00053 00054 /// the number of loaded element (element id) 00055 long eid; 00056 /// the number of DOFs on element 00057 long ndofe; 00058 /// the type of element load 00059 elloadtype tel; 00060 /// the number of edges 00061 long ned; 00062 /// the number of nodes on one edge 00063 long nned; 00064 /// the number of surfaces 00065 long nsurf; 00066 /// the number of nodes on one surface 00067 long nnsurf; 00068 /// the number of approximated functions on element 00069 long napfun; 00070 /// the number of elements of nodvale array 00071 long nnve; 00072 /// the number of elements of nodvals array 00073 long nnvs; 00074 /// the number of elements of nodvalv array 00075 long nnvv; 00076 /// components of edge load 00077 double *nodvale; 00078 /// components of surface load 00079 double *nodvals; 00080 /// components of volume load 00081 double *nodvalv; 00082 /// components of load %vector - nodal forces 00083 vector nf; 00084 /// indicators of loaded edges 00085 long *le; 00086 /// indicators of loaded surfaces 00087 long *ls; 00088 /// load case id 00089 long nlc; 00090 /// subload case id 00091 long nslc; 00092 }; 00093 00094 #endif