Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
icontainercontact.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "dim.h"
4 #include "base/src/callback.h"
11 namespace itasca {
12  class IContainer;
13 }
14 
15 namespace itascaxd {
16  using namespace itasca;
17  class IContact;
18  class IContactModel;
19  class IPiece;
20  class ContactClassDataBase;
21  class IContainerActiveContact;
22  class MonitorBase;
24 
29  public:
31  inline static const TType type_ = 0x04c815ba7;
32 
34  virtual IContainer * getIContainer()=0;
35  virtual const IContainer *getIContainer() const=0;
36 
38  virtual IContainer * getContainerAllContact()=0;
39  virtual const IContainer *getContainerAllContact() const=0;
40 
42  virtual IContainerActiveContact * getContainerActiveContact()=0;
43  virtual const IContainerActiveContact *getContainerActiveContact() const=0;
44 
46  virtual IContainer * getEnd1Container()=0;
47  virtual IContainer * getEnd2Container()=0;
48  virtual MonitorBase * getMonitorBase()=0;
49 
51  virtual TType getType() const=0;
53  virtual QString getName() const=0;
55  virtual QString getContactClassName() const=0;
57  virtual QString getTypeName() const=0;
59  virtual TType getContactType() const=0;
61  virtual double getMinDistance() const=0;
63  virtual bool isMechanical() const=0;
65  virtual bool isThermal() const=0;
68  // meaning that the contact model will be assigned to this type of contact when prompted.
69  virtual void registerContactModel(const QString &cmodel)=0;
71  virtual bool amInterestedIn(const QString &cmodel) const=0;
73  virtual void clean(bool addStiffness)=0;
75  virtual void setClassData(ContactClassDataBase *) =0;
77  virtual ContactClassDataBase *getClassData() =0;
79  virtual double getEnergy(const QString &name) const = 0;
82  virtual const IContact * findContactWithEndIds(quint64 id1,quint64 id2) const = 0;
85  virtual void setInhibit(IThing *t,bool b) = 0;
87  virtual IContainer * getInhibitedContacts() = 0;
88  virtual const IContainer * getInhibitedContacts() const = 0;
89 
90 
92  virtual quint64 createBlocks() = 0;
94  virtual quint64 getBlocks() = 0;
95 
97  virtual void threadedCallbackObject(Callback4<void,IContact *,quint32,quint32,void *> &callback,void *v=nullptr,bool useThreads=true) =0;
98 
100  template <class S,void (S::*MFP)(IContact *,quint32,quint32,void *)>
101  void threadedCallbackMethod(S *s,void *v=nullptr,bool useThreads=true) {
103  threadedCallbackObject(callback,v,useThreads);
104  }
105 
106  };
107 
108 } // namespace itasca
109 // EoF
Definition: callback.h:30
namespace Itasca
Definition: basememory.cpp:9
Base class for items that will be stored in containers.
Definition: ithing.h:31
DIM - Provides code portability between 2D and 3D codes.
Contact container class.
Definition: icontainercontact.h:28
unsigned int TType
class type indicator
Definition: basedef.h:41
Definition: icontaineractivecontact.h:13
Definition: callback.h:122
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4
EXPORT_TAG const char * getName()
Definition: fishexample.cpp:43
Interface for containers of IThings.
Definition: icontainer.h:23
Contact class.
Definition: icontact.h:34
void threadedCallbackMethod(S *s, void *v=nullptr, bool useThreads=true)
Implementation of the multithreaded loop using the threadedCallbackObject.
Definition: icontainercontact.h:101