BridgingInterface Class Reference

#include <bridging_interface.h>

Inheritance diagram for BridgingInterface:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 BridgingInterface ()
virtual void Dump (char *prefix)=0
 function to dump bridging situation to file
virtual void Init ()=0
 function for initiation
void SetName (char *nom)
 set the name of the bridging zone (usefull for dumped files)
virtual void SetParam (char *key, double value)=0
 generic parameters passing interface
virtual void Stucking ()=0
 function for applying the coupling
virtual ~BridgingInterface ()

Static Public Member Functions

static BridgingInterfacebuild (unsigned int bridging_code, DomainAtomicInterface &domA, DomainContinuumInterface &domC, int geomID, unsigned int Dim, Communicator &comm)
 static build responsible for the build

Protected Attributes

char name [256]

Detailed Description

Definition at line 49 of file bridging_interface.h.


Constructor & Destructor Documentation

BridgingInterface::BridgingInterface (  )  [inline]

Definition at line 52 of file bridging_interface.h.

References name.

00052                      {
00053     strcpy(name,"default-name");
00054   };

virtual BridgingInterface::~BridgingInterface (  )  [inline, virtual]

Definition at line 56 of file bridging_interface.h.

00056 {}


Member Function Documentation

BridgingInterface * BridgingInterface::build ( unsigned int  bridging_code,
DomainAtomicInterface domA,
DomainContinuumInterface domC,
int  geomID,
unsigned int  Dim,
Communicator comm 
) [static]

static build responsible for the build

Definition at line 54 of file bridging_interface.cpp.

References _BELYTSCHKO, _BELYTSCHKO_FULL, _FORMEFAIBLE, _LAMMPS, _LEAST_SQUARE, _LIBMESH, _MD1D, _MYMETHOD, _STAMP, and FATAL.

Referenced by DomainMultiScale::ParseLine().

00059                                                {
00060 
00061   BridgingInterface * rec=NULL;
00062 
00063 
00064   unsigned int md_code=_STAMP;
00065 
00066   if (dynamic_cast<DomainMD1D*>(&domA))
00067     md_code = _MD1D;
00068 #ifdef USING_STAMP
00069   else if (dynamic_cast<DomainStamp*>(&domA))
00070     md_code = _STAMP;
00071 #endif
00072 #ifdef USING_LAMMPS
00073   else if (dynamic_cast<DomainLammps*>(&domA))
00074     md_code = _LAMMPS;
00075 #endif
00076   else {FATAL("domaine atomique non reconnu " << md_code << " " << &domA);}
00077 
00078   unsigned int elast_code;
00079 
00080   if (dynamic_cast<DomainLibMesh<1>*>(&domC) ||
00081       dynamic_cast<DomainLibMesh<2>*>(&domC) ||
00082       dynamic_cast<DomainLibMesh<3>*>(&domC))
00083     elast_code = _LIBMESH;
00084   else {FATAL("domaine continu non reconnu");}
00085 
00086 
00087 
00088 
00089   switch(bridging_code)
00090     {
00091     case _BELYTSCHKO:
00092 
00093       if (world_size > 1){
00094         //      FATAL("Le parallele c pas encore pret");
00095 #ifdef USING_STAMP
00096         if(Dim == 1 && md_code == _STAMP && elast_code == _LIBMESH)
00097           rec = new BelytschkoPar<DomainStamp,DomainLibMesh<1>,1>(domA,domC,geomID,comm);
00098         else if(Dim == 2 && md_code == _STAMP && elast_code == _LIBMESH)
00099           rec = new BelytschkoPar<DomainStamp,DomainLibMesh<2>,2>(domA,domC,geomID,comm);
00100         else if(Dim == 3 && md_code == _STAMP && elast_code == _LIBMESH)
00101           rec = new BelytschkoPar<DomainStamp,DomainLibMesh<3>,3>(domA,domC,geomID,comm);
00102 #endif
00103 #ifdef USING_LAMMPS
00104         if(Dim == 2 && md_code == _LAMMPS && elast_code == _LIBMESH)
00105           rec = new BelytschkoPar<DomainLammps,DomainLibMesh<2>,2>(domA,domC,geomID,comm);
00106         if(Dim == 3 && md_code == _LAMMPS && elast_code == _LIBMESH)
00107           rec = new BelytschkoPar<DomainLammps,DomainLibMesh<3>,3>(domA,domC,geomID,comm);
00108 #endif
00109         break;
00110 
00111       }
00112 
00113       if(Dim == 1 && md_code == _MD1D && elast_code == _LIBMESH)
00114         rec = new Belytschko<DomainMD1D,DomainLibMesh<1>,1>(domA,domC,geomID);
00115 #ifdef USING_STAMP
00116       else if(Dim == 1 && md_code == _STAMP && elast_code == _LIBMESH)
00117         rec = new Belytschko<DomainStamp,DomainLibMesh<1>,1>(domA,domC,geomID);
00118       else if(Dim == 2 && md_code == _STAMP && elast_code == _LIBMESH)
00119         rec = new Belytschko<DomainStamp,DomainLibMesh<2>,2>(domA,domC,geomID);
00120       else if(Dim == 3 && md_code == _STAMP && elast_code == _LIBMESH)
00121         rec = new Belytschko<DomainStamp,DomainLibMesh<3>,3>(domA,domC,geomID);
00122 #endif
00123 #ifdef USING_LAMMPS
00124       else if(Dim == 2 && md_code == _LAMMPS && elast_code == _LIBMESH)
00125         rec = new Belytschko<DomainLammps,DomainLibMesh<2>,2>(domA,domC,geomID);
00126       else if(Dim == 3 && md_code == _LAMMPS && elast_code == _LIBMESH)
00127         rec = new Belytschko<DomainLammps,DomainLibMesh<3>,3>(domA,domC,geomID);
00128 #endif
00129       break;
00130     case _BELYTSCHKO_FULL:
00131       if(Dim == 1 && md_code == _MD1D && elast_code == _LIBMESH)
00132         rec = new BelytschkoFull<DomainMD1D,DomainLibMesh<1>,1>(domA,domC,geomID);
00133 #ifdef USING_STAMP
00134       else if(Dim == 1 && md_code == _STAMP && elast_code == _LIBMESH)
00135         rec = new BelytschkoFull<DomainStamp,DomainLibMesh<1>,1>(domA,domC,geomID);
00136       else if(Dim == 2 && md_code == _STAMP && elast_code == _LIBMESH)
00137         rec = new BelytschkoFull<DomainStamp,DomainLibMesh<2>,2>(domA,domC,geomID);
00138 #endif
00139 #ifdef USING_LAMMPS
00140       else if(Dim == 2 && md_code == _LAMMPS && elast_code == _LIBMESH)
00141         rec = new BelytschkoFull<DomainLammps,DomainLibMesh<2>,2>(domA,domC,geomID);
00142 #endif
00143       break;
00144 
00145       break;
00146     case _LEAST_SQUARE:
00147 #if defined(USING_STAMP) && defined(EXPERIMENTAL_COUPLING)
00148       if (Dim > 1 || md_code != _STAMP){
00149         FATAL("Erreur : il faut utiliser un autre mode de couplage car celui ci ne fonctionne que en 1D");
00150       }
00151       rec = new LeastSquare<DomainStamp,DomainLibMesh<1>,1>(domA,domC,geomID,1);
00152 #else
00153       FATAL("pour least square recompiler avec le support stamp");
00154 #endif
00155       break;
00156 
00157     case _FORMEFAIBLE:
00158 #if defined(USING_STAMP) && defined(EXPERIMENTAL_COUPLING)
00159       if (Dim > 1){
00160         FATAL("Erreur : il faut utiliser un autre mode de couplage car celui ci ne fonctionne que en 1D");
00161       }
00162       rec = new FormeFaible<DomainStamp,DomainLibMesh<1>,1>(domA,domC,geomID);
00163 #else
00164       FATAL("pour least square recompiler avec le support stamp");
00165 #endif
00166       break;
00167 
00168     case _MYMETHOD:
00169 #if defined(USING_STAMP) && defined(EXPERIMENTAL_COUPLING)
00170       if (Dim > 1){
00171         FATAL("Erreur : il faut utiliser un autre mode de couplage car celui ci ne fonctionne que en 1D");
00172       }
00173       rec = new MyMethodFull<DomainStamp,DomainLibMesh<1>,1>(domA,domC,geomID);
00174 #else
00175       FATAL("pour least square recompiler avec le support stamp/lammps");
00176 #endif
00177       break;
00178     }
00179 
00180   if (rec == NULL){
00181     FATAL("Erreur : la combinaison demandee n'est pas jouable pour le moment");
00182   }
00183 
00184   return rec;
00185 }

virtual void BridgingInterface::Dump ( char *  prefix  )  [pure virtual]

function to dump bridging situation to file

Implemented in Bridging< DomainA, DomainC, Dim, Pond >, Bridging< DomainA, DomainC, Dim, 1 >, Bridging< DomainA, DomainC, Dim, LINEAR >, Bridging< DomainA, DomainC, Dim, Pond >, and Bridging< DomainA, DomainC, Dim, CUSTOM >.

virtual void BridgingInterface::Init (  )  [pure virtual]

function for initiation

Implemented in Belytschko< DomainA, DomainC, Dim >, BelytschkoFull< DomainA, DomainC, Dim >, BelytschkoPar< DomainA, DomainC, Dim >, FormeFaible< DomainA, DomainC, Dim >, LeastSquare< DomainA, DomainC, Dim >, MyMethodFull< DomainA, DomainC, Dim >, BelytschkoTemplate< DomainA, DomainC, Dim, BridgingPar< DomainA, DomainC, Dim, 1 > >, and BelytschkoTemplate< DomainA, DomainC, Dim, Bridging< DomainA, DomainC, Dim, 1 > >.

Referenced by DomainMultiScale::ParseLine().

void BridgingInterface::SetName ( char *  nom  )  [inline]

set the name of the bridging zone (usefull for dumped files)

Definition at line 77 of file bridging_interface.h.

References name.

Referenced by DomainMultiScale::ParseLine().

00077                           {
00078     strncpy(name,nom,255);
00079   }

virtual void BridgingInterface::SetParam ( char *  key,
double  value 
) [pure virtual]

generic parameters passing interface

Implemented in Bridging< DomainA, DomainC, Dim, Pond >, Bridging< DomainA, DomainC, Dim, 1 >, Bridging< DomainA, DomainC, Dim, LINEAR >, Bridging< DomainA, DomainC, Dim, Pond >, and Bridging< DomainA, DomainC, Dim, CUSTOM >.

Referenced by DomainMultiScale::ParseLine().

virtual void BridgingInterface::Stucking (  )  [pure virtual]

function for applying the coupling

Implemented in Belytschko< DomainA, DomainC, Dim >, BelytschkoFull< DomainA, DomainC, Dim >, BelytschkoPar< DomainA, DomainC, Dim >, FormeFaible< DomainA, DomainC, Dim >, LeastSquare< DomainA, DomainC, Dim >, MyMethodFull< DomainA, DomainC, Dim >, BelytschkoTemplate< DomainA, DomainC, Dim, BridgingPar< DomainA, DomainC, Dim, 1 > >, and BelytschkoTemplate< DomainA, DomainC, Dim, Bridging< DomainA, DomainC, Dim, 1 > >.


Member Data Documentation

char BridgingInterface::name[256] [protected]

Definition at line 83 of file bridging_interface.h.

Referenced by BridgingInterface(), Bridging< DomainA, DomainC, Dim, Pond >::Dump(), and SetName().


The documentation for this class was generated from the following files:
Generated on Fri Sep 7 13:13:06 2007 for LibMultiScale by  doxygen 1.5.2