Page MenuHomec4science

coupling_atomic_continuum.hh
No OneTemporary

File Metadata

Created
Wed, Jun 26, 00:19

coupling_atomic_continuum.hh

/**
* @file coupling_atomic_continuum.hh
*
* @author Guillaume Anciaux <guillaume.anciaux@epfl.ch>
*
* @date Wed May 22 17:27:21 2013
*
* @brief Coupling object between atomistic and dislocation dynamics
*
* @section LICENSE
*
* Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne)
* Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides)
*
* LibMultiScale is free software: you can redistribute it and/or modify it
* under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* LibMultiScale is distributed in the hope that it will be useful, but
* WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with LibMultiScale. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* -------------------------------------------------------------------------- */
#ifndef COUPLING_ATOMIC_CONTINUUM_H
#define COUPLING_ATOMIC_CONTINUUM_H
/* -------------------------------------------------------------------------- */
#include "coupling.hh"
/* -------------------------------------------------------------------------- */
__BEGIN_LIBMULTISCALE__
/** this class represent a low-level coupling zone. The Belytschko Method
for instance is based on it, as it can compute the ponderation of each DOFs,
association between atoms and elements and the shape values through the
smatrix object */
template <typename DomainA, typename DomainC, UInt Dim>
class CouplingAtomicContinuum : public Coupling<DomainA, DomainC, Dim> {
/* ------------------------------------------------------------------------ */
/* Constructors/Destructors */
/* ------------------------------------------------------------------------ */
public:
CouplingAtomicContinuum<DomainA, DomainC, Dim>(const std::string &name,
DomainInterface &A,
DomainInterface &C)
: Coupling<DomainA, DomainC, Dim>(name, A, C) {
comm_group_continuum = C.getGroupID();
comm_group_atomic = A.getGroupID();
is_in_continuum =
Communicator::getCommunicator().amIinGroup(comm_group_continuum);
is_in_atomic =
Communicator::getCommunicator().amIinGroup(comm_group_atomic);
};
virtual ~CouplingAtomicContinuum() {}
/* ------------------------------------------------------------------------ */
/* Typedefs */
/* ------------------------------------------------------------------------ */
typedef typename DomainA::RefAtom RefAtom;
typedef typename DomainA::ContainerAtoms ContainerAtoms;
typedef typename DomainA::IteratorAtoms IteratorAtoms;
typedef typename DomainC::RefElem RefElem;
typedef typename DomainC::RefNode RefNode;
typedef typename DomainC::_Vec_ _Vec_;
typedef typename DomainC::ContainerElems ContainerElems;
typedef typename DomainC::IteratorElems IteratorElems;
typedef typename DomainC::ContainerNodes ContainerNodes;
typedef typename DomainC::IteratorNodes IteratorNodes;
typedef ContainerArray<RefAtom> ContainerAtomsSubset;
typedef ContainerArray<RefNode> ContainerNodesSubset;
typedef ContainerArray<RefElem> ContainerElemsSubset;
typedef typename ContainerArray<RefNode>::iterator IteratorNodesSubset;
typedef typename ContainerArray<RefElem>::iterator IteratorElemsSubset;
typedef typename ContainerArray<RefAtom>::iterator IteratorAtomsSubset;
/* ------------------------------------------------------------------------ */
/* Class Members */
/* ------------------------------------------------------------------------ */
protected:
//! group ID of the continuum side
CommGroup comm_group_continuum;
//! group IF of the atomic side
CommGroup comm_group_atomic;
//! flag if in group continuum
bool is_in_continuum;
//! flag if in group atomic
bool is_in_atomic;
};
/* -------------------------------------------------------------------------- */
__END_LIBMULTISCALE__
#endif // COUPLING_ATOMIC_CONTINUUM

Event Timeline