PeriDyno 1.0.0
Loading...
Searching...
No Matches
initializeMultiphysics.cpp
Go to the documentation of this file.
2
3#include "NodeFactory.h"
4
5#include "VolumeBoundary.h"
6#include "AdaptiveBoundary.h"
7
9
10namespace dyno
11{
12 std::atomic<MultiphysicsInitializer*> MultiphysicsInitializer::gInstance;
14
16 {
17 MultiphysicsInitializer* ins = gInstance.load(std::memory_order_acquire);
18 if (!ins) {
19 std::lock_guard<std::mutex> tLock(gMutex);
20 ins = gInstance.load(std::memory_order_relaxed);
21 if (!ins) {
22 ins = new MultiphysicsInitializer();
23 ins->setName("Peridynamics");
24 ins->setVersion("1.0");
25 ins->setDescription("A multiphysics library");
26
27 gInstance.store(ins, std::memory_order_release);
28 }
29 }
30
31 return ins;
32 }
33
38
40 {
42
43 auto page = factory->addPage(
44 "Volume",
45 "ToolBarIco/Volume/GenerateSparseVolume.png");
46
47 auto group = page->addGroup("Volume");
48
49 group->addAction(
50 "Adaptive Boundary",
51 "ToolBarIco/Volume/AdaptiveBoundary.png",
52 [=]()->std::shared_ptr<Node> {
53 auto node = std::make_shared<AdaptiveBoundary<DataType3f>>();
54 return node;
55 });
56
57 auto psPage = factory->addPage(
58 "Particle System",
59 "ToolBarIco/ParticleSystem/ParticleSystem.png");
60
61 auto emitters = psPage->addGroup("Emitters");
62
63 emitters->addAction(
64 "Poisson Disk Sampler",
65 "ToolBarIco/Modeling/PoissonDiskSampler_v2.png",
66 [=]()->std::shared_ptr<Node> {
67 return std::make_shared<PoissonDiskSampling<DataType3f>>();
68 });
69 }
70}
71
73{
76
77 return nullptr;
78}
79
static std::atomic< MultiphysicsInitializer * > gInstance
static NodeFactory * instance()
std::shared_ptr< NodePage > addPage(std::string name, std::string icon)
PERIDYNO_API dyno::PluginEntry * initDynoPlugin()
dyno::PluginEntry * initStaticPlugin()
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
Definition PluginEntry.h:14
void setDescription(std::string desc)
PluginEntry()
void setVersion(std::string pluginVersion)
void setName(std::string pluginName)