00001 // -*- C++ -*- 00002 // 00003 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00004 // 00005 // Fehmi Cirak 00006 // California Institute of Technology 00007 // (C) 2004 All Rights Reserved 00008 // 00009 // <LicenseText> 00010 // 00011 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00012 // 00013 #ifndef EXMASSFUNCTOR_H 00014 #define EXMASSFUNCTOR_H 00015 #include "shells/fem/definitions.h" 00016 00017 #include "shells/driverCC/SVertexFunctors.h" 00018 #include "ImperfectThickness.h" 00019 00020 #include <functional> 00021 00022 00023 namespace shells { 00024 class ExMassFunctor; 00025 struct SElementS; 00026 struct SVertexS; 00027 } 00028 00029 00030 class shells::ExMassFunctor : 00031 public std::unary_function<shells::SElementS *, void > { 00032 public: 00033 ExMassFunctor(const double& thick): _impfThickness(), _thick(thick) {} 00034 void operator()(shells::SElementS * const element); 00035 ~ExMassFunctor(){} 00036 00037 private: 00038 static double _xref[SVertexCoordinate::numVar][MAXVAL]; 00039 static double _masselem[MAXVAL]; 00040 00041 ImperfectThickness _impfThickness; 00042 00043 double _thick; 00044 }; 00045 00046 #endif