namespace ewalena
0.2.15
ewalena is not an acronym
|
00001 // ------------------------------------------------------------------- 00002 // @author Toby D. Young 00003 // @version $Id: dielectric_field.h 988 2012-11-26 19:09:39Z oneliefleft $ 00004 // 00005 // Copyright 2010, 2012 namespace ewalena authors. All rights 00006 // reserved. 00007 // 00008 // Redistribution and use in source and binary forms, with or without 00009 // modification, are permitted provided that the following conditions 00010 // are met: 00011 // 00012 // 1. Redistributions of source code must retain the above copyright 00013 // notice, this list of conditions and the following disclaimer. 00014 // 00015 // 2. Redistributions in binary form must reproduce the above 00016 // copyright notice, this list of conditions and the following 00017 // disclaimer in the documentation and/or other materials provided 00018 // with the distribution. 00019 // 00020 // THIS SOFTWARE IS PROVIDED BY THE NAMEPSACE EWALENA AUTHORS ``AS 00021 // IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00022 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 00023 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 00024 // NAMESPACE EWALENA AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 00025 // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00026 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00027 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00028 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 00029 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00030 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 00031 // OF THE POSSIBILITY OF SUCH DAMAGE. 00032 // 00033 // The views and conclusions contained in the software and 00034 // documentation are those of the authors and should not be 00035 // interpreted as representing official policies, either expressed or 00036 // implied, of the namespace ewalena authors. 00037 // ------------------------------------------------------------------- 00038 00039 #ifndef __ewalena_dielectric_field_h 00040 #define __ewalena_dielectric_field_h 00041 00042 00043 #ifdef EWALENA_HAVE_CONFIG_H 00044 #include <ewalena/base/config.h> 00045 #endif 00046 00047 #include <ewalena/numerics/crystal_field_base.h> 00048 00049 namespace ewalena 00050 { 00051 00052 namespace Crystal 00053 { 00054 00070 template <typename ValueType = double> 00071 class DielectricField 00072 : 00073 public Crystal::CrystalFieldBase<3, 2, ValueType> 00074 { 00075 protected: 00076 00081 void distribute_moduli_to_hexagonal (); 00082 00087 void distribute_moduli_to_cubic (); 00088 00093 void distribute_moduli_to_trigonal (); 00094 00095 public: 00096 00100 DielectricField (const Vector<ValueType> &moduli = Vector<ValueType> (), 00101 const SymmetryFlag &symmetry_flags = SymmetryFlag::null) 00102 : 00103 CrystalFieldBase<3, 2, ValueType> (moduli, symmetry_flags) 00104 {} 00105 00109 virtual ~DielectricField (); 00110 00115 void distribute_moduli (const Vector<ValueType> &moduli); 00116 00120 inline 00121 ewalena::Crystal::CrystalFieldBase<3, 2, ValueType> operator* () const 00122 { 00123 return (*this); 00124 } 00125 00126 }; /* DielectricField */ 00127 00128 } /* namespace Crystal */ 00129 00130 } /* namespace ewalena */ 00131 00132 #endif /* __ewalena_dielectric_field_h */ 00133 00134