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 INTERNALENERGYFUNCTOR_H 00014 #define INTERNALENERGYFUNCTOR_H 00015 #include "../fem/definitions.h" 00016 00017 #include "SVertexFunctors.h" 00018 00019 #include <functional> 00020 00021 00022 namespace shells { 00023 class ComputeInternalEnergyFunctor; 00024 struct SElementS; 00025 } 00026 00027 00028 class shells::ComputeInternalEnergyFunctor : 00029 public std::unary_function<shells::SElementS *, void > { 00030 00031 public: 00032 ComputeInternalEnergyFunctor(const double& thick, double * const energy) 00033 :_thick(thick), _energy(energy){} 00034 ~ComputeInternalEnergyFunctor(){} 00035 00036 void operator()(shells::SElementS * const element); 00037 00038 private: 00039 double _xref[SVertexCoordinate::numVar][MAXVAL]; 00040 double _xcur[SVertexCoordinate::numVar][MAXVAL]; 00041 00042 const double& _thick; 00043 double * const _energy; 00044 }; 00045 00046 #endif