|
OOFEM
2.1
|
00001 /* 00002 * 00003 * ##### ##### ###### ###### ### ### 00004 * ## ## ## ## ## ## ## ### ## 00005 * ## ## ## ## #### #### ## # ## 00006 * ## ## ## ## ## ## ## ## 00007 * ## ## ## ## ## ## ## ## 00008 * ##### ##### ## ###### ## ## 00009 * 00010 * 00011 * OOFEM : Object Oriented Finite Element Code 00012 * 00013 * Copyright (C) 1993 - 2013 Borek Patzak 00014 * 00015 * 00016 * 00017 * Czech Technical University, Faculty of Civil Engineering, 00018 * Department of Structural Mechanics, 166 29 Prague, Czech Republic 00019 * 00020 * This program is free software; you can redistribute it and/or modify 00021 * it under the terms of the GNU General Public License as published by 00022 * the Free Software Foundation; either version 2 of the License, or 00023 * (at your option) any later version. 00024 * 00025 * This program is distributed in the hope that it will be useful, 00026 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00027 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00028 * GNU General Public License for more details. 00029 * 00030 * You should have received a copy of the GNU General Public License 00031 * along with this program; if not, write to the Free Software 00032 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00033 */ 00034 00035 #ifndef boundaryload_h 00036 #define boundaryload_h 00037 00038 #include "load.h" 00039 #include "bctype.h" 00040 #include "valuemodetype.h" 00041 #include "dictionr.h" 00042 00043 namespace oofem { 00044 class TimeStep; 00045 00099 class BoundaryLoad : public Load 00100 { 00101 public: 00107 enum BL_CoordSystType { 00108 BL_GlobalMode, 00109 BL_LocalMode, 00110 }; 00111 00115 enum BL_FormulationType { 00116 BL_EntityFormulation, 00117 BL_GlobalFormulation, 00118 }; 00119 00120 protected: 00122 int nDofs; 00124 bcType lType; 00126 BL_CoordSystType coordSystemType; 00128 Dictionary propertyDictionary; 00129 00130 public: 00136 BoundaryLoad(int i, Domain *d) : Load(i, d), nDofs(0), coordSystemType(BL_GlobalMode) { } 00137 00138 virtual void computeValueAt(FloatArray &answer, TimeStep *tStep, FloatArray &coords, ValueModeType mode); 00142 virtual int giveApproxOrder() = 0; 00146 int giveNumberOfDofs() { return nDofs; } 00150 BL_CoordSystType giveCoordSystMode() { return coordSystemType; } 00154 virtual BL_FormulationType giveFormulationType() { return BL_EntityFormulation; } 00160 IRResultType initializeFrom(InputRecord *ir); 00161 virtual int giveInputRecordString(std :: string &str, bool keyword = true); 00169 virtual bcType giveType() const { return lType; } 00176 virtual double giveProperty(int aProperty); 00177 00178 virtual classType giveClassID() const { return BoundaryLoadClass; } 00179 virtual const char *giveClassName() const { return "BoundaryLoad"; } 00180 00181 protected: 00189 virtual void computeNArray(FloatArray &answer, FloatArray &coords) const = 0; 00196 virtual void computeComponentArrayAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode); 00197 }; 00198 } // end namespace oofem 00199 #endif // boundaryload_h 00200 00201 00202 00203 00204 00205