namespace ewalena  0.2.15
ewalena is not an acronym
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Protected Member Functions | Protected Attributes
ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType > Class Template Reference

Base class for crystal fields of empirical moduli. More...

#include <include/ewalena/numerics/crystal_field_base.h>

Inheritance diagram for ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >:
Inheritance graph
[legend]
Collaboration diagram for ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual void assign_symmetry_flags (const SymmetryFlag &symmetry_flags, const SymmetryFlag &group_flags=null)
 CrystalFieldBase (const Vector< ValueType > &moduli=Vector< ValueType >(), const SymmetryFlag &symmetry_flags=SymmetryFlag::null, const SymmetryFlag &group_flags=SymmetryFlag::null)
virtual void distribute_moduli (const Vector< ValueType > &moduli)
SymmetryFlag group_flags () const
unsigned int n_components () const
Tensor< dim, rank, ValueType > operator* () const
CrystalFieldBase< dim, rank,
ValueType > & 
operator= (const CrystalFieldBase< dim, rank, ValueType > &T)
SymmetryFlag symmetry_flags () const
void write_gnuplot (std::ostream &out) const
virtual ~CrystalFieldBase ()

Protected Member Functions

virtual void assign_moduli (const Vector< ValueType > &moduli)

Protected Attributes

SymmetryFlag group_flags_
Vector< ValueType > moduli_
SymmetryFlag symmetry_flags_

Detailed Description

template<int dim, int rank, typename ValueType = double>
class ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >

Base class for crystal fields of empirical moduli.

CrystalFieldBase is a base class for other classes that describe classical crystal fields that in turn describe the solid-state physics of crystal structures. Enigmatic examples of such fields are the elastic field (a fourth-order tensor) and the dielectric field (second-order) tensor.

Derived classes of the CrystalFieldBase class are normally used in application code by first assigning a crystal symmetry class and a set of moduli to the tensor base, and then let the member function distribute_moduli () automagically fill the tensor according to the rules governed by the class (or field) type and symmetry group. Schematically, this may look like:

     // Initialise an elastic tensor field and elastic moduli. 
     ewalena::ElasticField elastic_field;

     // Elastic fields of cubic symmetry have exactly three
     // independent constants. This example is for cubic zinc-oxide
     // (units: GPa).
     ewalena::Vector<double> elastic_moduli = {193, 139, 96};

     // Assign symmetry flags to this elastic tensor field.     
     elastic_field.assign_symmetry_flag (ewalena::SymmetryFlag::Crystal::cubic);

     // Distribute these elastic moduli onto this tensor.
     elastic_field.distribute_moduli (elastic_moduli);
     
Author:
Toby D. Young 2009, 2010, 2012.

Constructor & Destructor Documentation

template<int dim, int rank, typename ValueType = double>
ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::CrystalFieldBase ( const Vector< ValueType > &  moduli = Vector<ValueType> (),
const SymmetryFlag symmetry_flags = SymmetryFlag::null,
const SymmetryFlag group_flags = SymmetryFlag::null 
) [inline]

Constructor.

template<int dim, int rank, typename ValueType = double>
virtual ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::~CrystalFieldBase ( ) [virtual]

Virtual destructor.


Member Function Documentation

template<int dim, int rank, typename ValueType = double>
virtual void ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::assign_moduli ( const Vector< ValueType > &  moduli) [protected, virtual]

Assign moduli to this tensor field. Any previously assigned moduli will be brutely overwritten.

template<int dim, int rank, typename ValueType = double>
virtual void ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::assign_symmetry_flags ( const SymmetryFlag symmetry_flags,
const SymmetryFlag group_flags = null 
) [virtual]

Assign symmetry flags to this tensor field. Any previously assigned symmetry flags will be brutely overwritten.

template<int dim, int rank, typename ValueType = double>
virtual void ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::distribute_moduli ( const Vector< ValueType > &  moduli) [virtual]
template<int dim, int rank, typename ValueType = double>
SymmetryFlag ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::group_flags ( ) const

Return the symmetry flag associated with this tensor field.

template<int dim, int rank, typename ValueType = double>
unsigned int ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::n_components ( ) const

Return the number of components in this tensor field.

Reimplemented from ewalena::Tensor< dim, rank, ValueType >.

template<int dim, int rank, typename ValueType = double>
Tensor<dim, rank, ValueType> ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::operator* ( ) const [inline]
template<int dim, int rank, typename ValueType = double>
CrystalFieldBase<dim, rank, ValueType>& ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::operator= ( const CrystalFieldBase< dim, rank, ValueType > &  T)

Assignment operator. Initialise this tensor with the T.

template<int dim, int rank, typename ValueType = double>
SymmetryFlag ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::symmetry_flags ( ) const

Return the symmetry flag associated with this tensor field.

template<int dim, int rank, typename ValueType = double>
void ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::write_gnuplot ( std::ostream &  out) const

Write gnuplot.


Member Data Documentation

template<int dim, int rank, typename ValueType = double>
SymmetryFlag ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::group_flags_ [protected]

Original symmetry flags handed to the constructor.

template<int dim, int rank, typename ValueType = double>
Vector<ValueType> ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::moduli_ [protected]

Original moduli handed to the constructor.

template<int dim, int rank, typename ValueType = double>
SymmetryFlag ewalena::Crystal::CrystalFieldBase< dim, rank, ValueType >::symmetry_flags_ [protected]

Original symmetry flags handed to the constructor.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines