Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Advection diffusion - DO NOT MERGE #788

Draft
wants to merge 107 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
3b0febb
Attempted to change path initialisation for property extraction.
uschille Jun 8, 2017
9c08f93
Remove PathManager::SaveConfiguration which was defunct anyway.
uschille Jun 9, 2017
5c5c8b6
Introduce a map that allows different data sources for property output.
uschille Jun 10, 2017
8d7cdc4
In hemelb::extraction::LocalPropertyOutput, rather store the dataSour…
uschille Jun 10, 2017
ac0cef7
Add stubs for advectionDiffusionModel.
uschille May 28, 2017
c7a37b9
Add advectionDiffusionModel to SimulationMaster.h.
uschille May 28, 2017
a37bb13
Add constructors and initialization for advectionDiffusionData, advec…
uschille Jun 7, 2017
377fb61
Moved local variable `propertyCache` inside the colloid section
uschille Jun 7, 2017
4bdc3d6
Add property extractor instances for advection diffusion.
uschille Jun 10, 2017
273e783
Introduce a map that allows different data sources for property output.
uschille Jun 10, 2017
4ea4b39
Removed the second PropertyActor which will not be needed thanks to
uschille Jun 10, 2017
5c50795
Added conduits for new property outputs from individual property caches.
uschille Jun 11, 2017
8349bbd
Add separate advectionDiffusionLatticeType.
uschille Jun 11, 2017
9f93093
Add inlet/outlet conditions for advection diffusion.
uschille Jun 17, 2017
eb8c35c
Add advection diffusion inlet/outlet conditions to header file.
uschille Jun 17, 2017
d69f011
Change of behavior of the GeometryReader and LatticeData!
uschille Jun 21, 2017
eb23e52
Modified OutputGeneration.py to recognize two parts
May 15, 2017
16b6a44
Append part number and second seed point in profile
Jun 26, 2017
f40b7c9
Add second seed point functionallity
Jun 26, 2017
b90bea3
Multi parts embedded in profile file
Jun 28, 2017
276e773
Remove second seed point from model generation
Jun 28, 2017
fc67a01
Add correct test dataset
Jun 28, 2017
ad71217
Correct multi part functionality
Jun 28, 2017
a93cf37
Assign different id to each part
Jun 29, 2017
18140d4
Add stent intersection in geometry generator
Jun 30, 2017
6eb3588
Add stent functionality in xml writer
Jun 30, 2017
6add036
Add stent recognization to geometry library
Jul 3, 2017
f4766d4
Add stent intersection to neighbouring data manager and decomposition
Jul 3, 2017
42680c8
Revert "Add stent intersection to neighbouring data manager and decom…
Jul 5, 2017
476c757
Revert "Add stent recognization to geometry library"
Jul 5, 2017
5b66e71
Revert "Add stent intersection in geometry generator"
Jul 5, 2017
da2eab1
Add new stent recognization to geometry generator just based on negat…
Jul 5, 2017
b73a4fc
Add wall ID to gmy extraction
Jul 5, 2017
5dd04d1
Add vessel wall and stent wall recognization based on negative IDs
Jul 5, 2017
793446e
Add advection diffusion lattice classes
Jul 5, 2017
c0a8389
Fixed typo for advection diffusion class
Jul 5, 2017
c1d00b2
Add advection diffusion lattices to header file
Jul 5, 2017
dced2fa
Add advection diffusion lattices to CMakeLists.txt of lb library
Jul 5, 2017
f96593a
Fixed typo in advection diffusion lattice header file
Jul 5, 2017
a208de7
Create Advection Diffusion LBGK Kernel
Jul 5, 2017
ad1f543
Correct advection diffusion kernel class
Jul 5, 2017
d472729
Fixed typo in advection diffusion base kernel
Jul 5, 2017
3cf3930
Fixed typo in advection diffusion base kernel
Jul 5, 2017
274c308
Revert "Fixed typo in advection diffusion base kernel"
Jul 6, 2017
6e87e99
Revert "Fixed typo in advection diffusion base kernel"
Jul 6, 2017
a0b3275
Revert "Correct advection diffusion kernel class"
Jul 6, 2017
aeed2cc
Revert "Create Advection Diffusion LBGK Kernel"
Jul 6, 2017
23b6480
Create advection diffusion kernel class
Jul 6, 2017
c61b5c1
Create advection diffusion collision operator
Jul 6, 2017
9180962
Add advection diffusion collision operator to Collisions header file
Jul 6, 2017
d2db2f2
Revert "Add advection diffusion collision operator to Collisions head…
Jul 6, 2017
39fc23d
Revert "Create advection diffusion collision operator"
Jul 6, 2017
214d09a
Revert "Create advection diffusion kernel class"
Jul 6, 2017
a18bc6e
Consistent advection diffusion lattice definition
Jul 6, 2017
e19f4a4
Create Advection Diffusion kernel and collision operator based on mac…
Jul 6, 2017
30e43cf
Add stent boundary value to lattice boltzmann library
Jul 6, 2017
58c72f7
Create Advection Diffusion MRT kernel
Jul 6, 2017
8f675ce
Add Advection Diffusion MRT kernel to hydrovars friend classes list
Jul 6, 2017
9f9cd6e
Add Advection Diffusion streamers and boundary conditions according t…
Jul 7, 2017
b3afddc
Fixed typo in advection diffusion BFL and GZS BCs
Jul 7, 2017
26cb67c
Add build parameters for advection diffusion BCs
Jul 7, 2017
5746b4a
Add stent ID reader to GeometryReader functionality
Jul 7, 2017
ef869aa
Change the BCs logics to get fix six collision types
Jul 7, 2017
11f4507
Refactor lattice types and remain second instance independent
Jul 10, 2017
401bc45
Fixed incorrectly removed D315 class
Jul 10, 2017
c3dcb34
Add D3Q7 to lattice header file
Jul 10, 2017
e08c035
Fixed typo for lattice header file
Jul 10, 2017
46fb9d6
Remove GZS BCs for ADE
Jul 10, 2017
7305e04
Add stents header file to simulation config and remove lattice data h…
Jul 10, 2017
5f560d8
Add stent IO to configuration library
Jul 10, 2017
5edd321
Create ADE Class
Jul 10, 2017
9018c29
Add stent ID to make a difference between iolet and stent IDs
Jul 10, 2017
0d2f2f8
Correct stent ID assignment
Jul 11, 2017
8dbf89c
Change unit of BC and initial condition for stents
Jul 11, 2017
d1bca2e
Connect first/second instances together and complete ADE simulation w…
Jul 17, 2017
5f948fc
Remove backup file
Jul 17, 2017
c130fba
Remove backup file
Jul 17, 2017
10196eb
Update test case
Jul 18, 2017
765ccf3
Add coupled lattice data
Jul 18, 2017
2fc30b1
Revert "Add coupled lattice data"
Jul 18, 2017
f89176e
Add Outflow BC
myousefi2016 Jul 18, 2017
4f56b9d
Add Dirichlet BC for Inlet
myousefi2016 Jul 26, 2017
35211b6
Correct linear equilibrium function
myousefi2016 Jul 26, 2017
1633995
Correct XML writer
Jul 27, 2017
6acecba
Correct XML writer
Jul 27, 2017
8e4cecb
Update test case
Jul 27, 2017
1c82698
Add Zero Diffusion BC at Outlet
myousefi2016 Aug 2, 2017
c67f867
Correct relaxation time reffering to hydrovars class which doesn't ha…
Aug 9, 2017
47110aa
Add Vessel Wall Absorption (Robin) Boundary Condition
Sep 6, 2017
f5bc9ad
Add Hollow Parabolic Velocity Profile
Sep 14, 2017
6f7faae
Correct Hollow Parabolic Distance
Sep 14, 2017
e64ab46
Create Hollow File Velocity Boundary Condition
Nov 17, 2017
1a57e62
Add SSE3 functionality for ADE
Nov 17, 2017
74eab1d
Correct SSE3 functionality
Nov 17, 2017
0bd8550
Correct a typo
Nov 17, 2017
7f289aa
Add vessel and stent walls selector functionallity to extraction library
Nov 22, 2017
7400752
Change the lattice type to D3Q19
Dec 8, 2017
828865b
Add flux calculation from eq. and neq. parts of distribution
Jan 16, 2018
1b4b000
Change lattice type to D3Q15
Jan 16, 2018
5bdde3e
Force to link zlib libraries and avoid undefined references
myousefi2016 Feb 13, 2018
64498d8
Correct flux calculation from eq. and neq. part of distribution funct…
myousefi2016 Feb 19, 2018
67e0bcb
Correct VTK libraries link to setuptool
Apr 20, 2018
c635028
Add Coating Concentration and Flux Boundary Conditions
Mar 14, 2019
3e6b192
Tune parameters
myousefi2016 Mar 15, 2019
aa09584
Enable ADE from config file
Mar 25, 2019
34ecbbf
Add iolet geometry selector
myousefi2016 May 7, 2019
74af04f
Correct iolet type conversion
myousefi2016 Jul 15, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions Code/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ option(HEMELB_BUILD_DEBUGGER "Build the built in debugger" ON)
# mark_as_advanced(HEMELB_DEBUGGER_IMPLEMENTATION)

option(HEMELB_VALIDATE_GEOMETRY "Validate geometry" OFF)
option(HEMELB_BUILD_TESTS_ALL "Build all the tests" ON)
option(HEMELB_BUILD_TESTS_UNIT "Build the unit-tests (HEMELB_BUILD_TESTS_ALL takes precedence)" ON)
option(HEMELB_BUILD_TESTS_FUNCTIONAL "Build the functional tests (HEMELB_BUILD_TESTS_ALL takes precedence)" ON)
option(HEMELB_BUILD_TESTS_ALL "Build all the tests" OFF)
option(HEMELB_BUILD_TESTS_UNIT "Build the unit-tests (HEMELB_BUILD_TESTS_ALL takes precedence)" OFF)
option(HEMELB_BUILD_TESTS_FUNCTIONAL "Build the functional tests (HEMELB_BUILD_TESTS_ALL takes precedence)" OFF)
option(HEMELB_USE_ALL_WARNINGS_GNU "Show all compiler warnings on development builds (gnu-style-compilers)" ON)
option(HEMELB_USE_STREAKLINES "Calculate streakline images" OFF)
option(HEMELB_DEPENDENCIES_SET_RPATH "Set runtime RPATH" ON)
Expand Down Expand Up @@ -49,19 +49,19 @@ set(HEMELB_DEPENDENCIES_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../dependencies"
set(HEMELB_DEPENDENCIES_INSTALL_PATH ${HEMELB_DEPENDENCIES_PATH}
CACHE FILEPATH "Path to find dependency includes and libraries")
set(HEMELB_OPTIMISATION "-O3" CACHE STRING "Optimisation level (can be blank or -O1 to -O4)")
set(HEMELB_LATTICE "D3Q15"
set(HEMELB_LATTICE "D3Q19"
CACHE STRING "Select the lattice type to use (D3Q15,D3Q19,D3Q27,D3Q15i)")
set(HEMELB_KERNEL "LBGK"
CACHE STRING "Select the kernel to use (LBGK,EntropicAnsumali,EntropicChik,MRT,TRT,NNCY,NNCYMOUSE,NNC,NNTPL)")
set(HEMELB_WALL_BOUNDARY "SIMPLEBOUNCEBACK"
CACHE STRING "Select the boundary conditions to be used at the walls (BFL,GZS,SIMPLEBOUNCEBACK,JUNKYANG)")
set(HEMELB_INLET_BOUNDARY "NASHZEROTHORDERPRESSUREIOLET"
set(HEMELB_INLET_BOUNDARY "LADDIOLET"
CACHE STRING "Select the boundary conditions to be used at the inlet (NASHZEROTHORDERPRESSUREIOLET,LADDIOLET)")
set(HEMELB_OUTLET_BOUNDARY "NASHZEROTHORDERPRESSUREIOLET"
CACHE STRING "Select the boundary conditions to be used at the outlets (NASHZEROTHORDERPRESSUREIOLET,LADDIOLET)")
set(HEMELB_COMPUTE_ARCHITECTURE "AMDBULLDOZER"
CACHE STRING "Select the architecture of the machine being used (INTELSANDYBRIDGE,AMDBULLDOZER,NEUTRAL,ISBFILEVELOCITYINLET)")
set(HEMELB_WALL_INLET_BOUNDARY "NASHZEROTHORDERPRESSURESBB"
set(HEMELB_WALL_INLET_BOUNDARY "LADDIOLETSBB"
CACHE STRING "Select the boundary conditions to be used at corners between walls and inlets (NASHZEROTHORDERPRESSURESBB,NASHZEROTHORDERPRESSUREBFL,LADDIOLETSBB,LADDIOLETBFL)")
set(HEMELB_WALL_OUTLET_BOUNDARY "NASHZEROTHORDERPRESSURESBB"
CACHE STRING "Select the boundary conditions to be used at corners between walls and outlets (NASHZEROTHORDERPRESSURESBB,NASHZEROTHORDERPRESSUREBFL,LADDIOLETSBB,LADDIOLETBFL)")
Expand All @@ -75,8 +75,8 @@ option(HEMELB_SEPARATE_CONCERNS "Communicate for each concern separately" OFF)

# Add warnings flags to development build types
if (HEMELB_USE_ALL_WARNINGS_GNU)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fpermissive")
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -fpermissive")
endif()
if(HEMELB_OPTIMISATION)
set( CMAKE_CXX_FLAGS_RELEASE ${HEMELB_OPTIMISATION})
Expand Down
2 changes: 1 addition & 1 deletion Code/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -1294,7 +1294,7 @@ GROUP_GRAPHS = YES
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.

UML_LOOK = NO
UML_LOOK = YES

# If set to YES, the inheritance and collaboration graphs will show the
# relations between templates and their instances.
Expand Down
108 changes: 99 additions & 9 deletions Code/SimulationMaster.cc
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@ SimulationMaster::SimulationMaster(hemelb::configuration::CommandLine & options,
{
timings[hemelb::reporting::Timers::total].Start();

advectionDiffusionData = NULL;
advectionDiffusionModel = NULL;
advectionDiffusionDataManager = NULL;
advectionDiffusionDataSource = NULL;
stentValues = NULL;
advectionDiffusionOutletValues = NULL;
advectionDiffusionInletValues = NULL;

latticeData = NULL;

colloidController = NULL;
Expand All @@ -54,10 +62,12 @@ SimulationMaster::SimulationMaster(hemelb::configuration::CommandLine & options,

fileManager = new hemelb::io::PathManager(options, IsCurrentProcTheIOProc(), GetProcessorCount());
simConfig = hemelb::configuration::SimConfig::New(fileManager->GetInputFile());

/* This is ugly design. References to encapuslated data members are
indicative of an ill-designed class hierarchy. */
unitConverter = &simConfig->GetUnitConverter();
monitoringConfig = simConfig->GetMonitoringConfiguration();

fileManager->SaveConfiguration(simConfig);
Initialise();
if (IsCurrentProcTheIOProc())
{
Expand Down Expand Up @@ -86,6 +96,13 @@ SimulationMaster::~SimulationMaster()
{
delete imageSendCpt;
}
delete advectionDiffusionData;
delete advectionDiffusionModel;
delete advectionDiffusionDataManager;
delete advectionDiffusionDataSource;
delete stentValues;
delete advectionDiffusionOutletValues;
delete advectionDiffusionInletValues;
delete latticeData;
delete colloidController;
delete latticeBoltzmannModel;
Expand Down Expand Up @@ -170,7 +187,19 @@ void SimulationMaster::Initialise()
timings,
neighbouringDataManager);

hemelb::lb::MacroscopicPropertyCache& propertyCache = latticeBoltzmannModel->GetPropertyCache();
if (simConfig->EnableADE())
{
hemelb::log::Logger::Log<hemelb::log::Info, hemelb::log::Singleton>("Initialising ADE.");
advectionDiffusionData = new hemelb::geometry::LatticeData(advectionDiffusionLatticeType::GetLatticeInfo(), readGeometryData, ioComms);
advectionDiffusionDataManager = new hemelb::geometry::neighbouring::NeighbouringDataManager(*advectionDiffusionData, advectionDiffusionData->GetNeighbouringData(), communicationNet);
advectionDiffusionModel = new hemelb::lb::ADELBM<advectionDiffusionLatticeType>(simConfig,
&communicationNet,
advectionDiffusionData,
simulationState,
timings,
advectionDiffusionDataManager,
latticeBoltzmannModel->GetPropertyCache());
}

if (simConfig->HasColloidSection())
{
Expand All @@ -185,6 +214,8 @@ void SimulationMaster::Initialise()
hemelb::log::Logger::Log<hemelb::log::Info, hemelb::log::Singleton>("Creating Boundary Conditions.");
hemelb::colloids::BoundaryConditions::InitBoundaryConditions(latticeData, xml);

hemelb::lb::MacroscopicPropertyCache& propertyCache = latticeBoltzmannModel->GetPropertyCache();

hemelb::log::Logger::Log<hemelb::log::Info, hemelb::log::Singleton>("Initialising Colloids.");
colloidController =
new hemelb::colloids::ColloidController(*latticeData,
Expand Down Expand Up @@ -267,10 +298,40 @@ void SimulationMaster::Initialise()
ioComms,
*unitConverter);

if (simConfig->EnableADE())
{
stentValues = new hemelb::lb::stents::BoundaryValues(advectionDiffusionData,
simConfig->GetStents(),
simulationState,
ioComms,
*unitConverter);

advectionDiffusionOutletValues = new hemelb::lb::iolets::BoundaryValues(hemelb::geometry::OUTLET_TYPE,
advectionDiffusionData,
simConfig->GetOutlets(),
simulationState,
ioComms,
*unitConverter);

advectionDiffusionInletValues = new hemelb::lb::iolets::BoundaryValues(hemelb::geometry::INLET_TYPE,
advectionDiffusionData,
simConfig->GetInlets(),
simulationState,
ioComms,
*unitConverter);
}

latticeBoltzmannModel->Initialise(visualisationControl, inletValues, outletValues, unitConverter);
neighbouringDataManager->ShareNeeds();
neighbouringDataManager->TransferNonFieldDependentInformation();

if (simConfig->EnableADE())
{
advectionDiffusionModel->Initialise(visualisationControl, stentValues, advectionDiffusionOutletValues, advectionDiffusionInletValues, unitConverter);
advectionDiffusionDataManager->ShareNeeds();
advectionDiffusionDataManager->TransferNonFieldDependentInformation();
}

steeringCpt = new hemelb::steering::SteeringComponent(network,
visualisationControl,
imageSendCpt,
Expand All @@ -283,24 +344,38 @@ void SimulationMaster::Initialise()
latticeBoltzmannModel->ReadVisParameters();

propertyDataSource =
new hemelb::extraction::LbDataSourceIterator(latticeBoltzmannModel->GetPropertyCache(),
*latticeData,
ioComms.Rank(),
*unitConverter);
new hemelb::extraction::LbDataSourceIterator(latticeBoltzmannModel->GetPropertyCache(),
*latticeData,
ioComms.Rank(),
*unitConverter);

if (simConfig->EnableADE())
{
advectionDiffusionDataSource =
new hemelb::extraction::LbDataSourceIterator(advectionDiffusionModel->GetPropertyCache(),
*advectionDiffusionData,
ioComms.Rank(),
*unitConverter);
}

if (simConfig->PropertyOutputCount() > 0)
{

for (unsigned outputNumber = 0; outputNumber < simConfig->PropertyOutputCount(); ++outputNumber)
{
/* This is ugly. The path would better be set during
instantiation of simConfig. Alas, sufficient effort has been
made to make that change nontrivial. This is C++ after all,
and things have to be obfuscated. */
simConfig->GetPropertyOutput(outputNumber)->filename = fileManager->GetDataExtractionPath()
+ simConfig->GetPropertyOutput(outputNumber)->filename;
}

propertyExtractor = new hemelb::extraction::PropertyActor(*simulationState,
simConfig->GetPropertyOutputs(),
*propertyDataSource,
dataSourceMap,
timings, ioComms);

}

imagesPeriod = OutputPeriod(imagesPerSimulation);
Expand All @@ -310,12 +385,22 @@ void SimulationMaster::Initialise()
hemelb::net::separate_communications);
netConcern = new hemelb::net::phased::NetConcern(communicationNet);
stepManager->RegisterIteratedActorSteps(*neighbouringDataManager, 0);
if (simConfig->EnableADE())
{
stepManager->RegisterIteratedActorSteps(*advectionDiffusionDataManager, 0);
}
if (colloidController != NULL)
{
stepManager->RegisterIteratedActorSteps(*colloidController, 1);
}
if (simConfig->EnableADE())
{
stepManager->RegisterIteratedActorSteps(*advectionDiffusionModel, 1);
stepManager->RegisterIteratedActorSteps(*stentValues, 1);
stepManager->RegisterIteratedActorSteps(*advectionDiffusionOutletValues, 1);
stepManager->RegisterIteratedActorSteps(*advectionDiffusionInletValues, 1);
}
stepManager->RegisterIteratedActorSteps(*latticeBoltzmannModel, 1);

stepManager->RegisterIteratedActorSteps(*inletValues, 1);
stepManager->RegisterIteratedActorSteps(*outletValues, 1);
stepManager->RegisterIteratedActorSteps(*steeringCpt, 1);
Expand Down Expand Up @@ -578,7 +663,12 @@ void SimulationMaster::RecalculatePropertyRequirements()
// Get the property cache & reset its list of properties to get.
hemelb::lb::MacroscopicPropertyCache& propertyCache = latticeBoltzmannModel->GetPropertyCache();

/* TODO: This should really be an iteration over all property caches */
propertyCache.ResetRequirements();
if (simConfig->EnableADE())
{
advectionDiffusionModel->GetPropertyCache().ResetRequirements();
}

// Check whether we're rendering images on this iteration.
if (visualisationControl->IsRendering())
Expand All @@ -605,7 +695,7 @@ void SimulationMaster::RecalculatePropertyRequirements()
// If extracting property results, check what's required by them.
if (propertyExtractor != NULL)
{
propertyExtractor->SetRequiredProperties(propertyCache);
propertyExtractor->SetRequiredProperties(dataSourceMap);
}

// If using streaklines, the velocity will be needed.
Expand Down
28 changes: 28 additions & 0 deletions Code/SimulationMaster.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,18 @@

#ifndef HEMELB_SIMULATIONMASTER_H
#define HEMELB_SIMULATIONMASTER_H
#define HEMELB_ADE_LATTICE D3Q15
#include "lb/lattices/Lattices.h"
#include "extraction/PropertyActor.h"
#include "lb/lb.hpp"
#include "lb/ADELB.hpp"
#include "lb/StabilityTester.h"
#include "net/net.h"
#include "steering/ImageSendComponent.h"
#include "steering/SteeringComponent.h"
#include "lb/EntropyTester.h"
#include "lb/iolets/BoundaryValues.h"
#include "lb/stents/BoundaryValues.h"
#include "util/UnitConverter.h"
#include "configuration/CommandLine.h"
#include "io/PathManager.h"
Expand Down Expand Up @@ -48,6 +51,10 @@ class SimulationMaster

hemelb::lb::iolets::BoundaryValues* inletValues;
hemelb::lb::iolets::BoundaryValues* outletValues;
hemelb::lb::stents::BoundaryValues* stentValues;
hemelb::lb::iolets::BoundaryValues* advectionDiffusionOutletValues;
hemelb::lb::iolets::BoundaryValues* advectionDiffusionInletValues;

virtual void DoTimeStep();

/* The next quantities are protected because they are used by MultiscaleSimulationMaster */
Expand All @@ -56,6 +63,10 @@ class SimulationMaster
hemelb::geometry::LatticeData* latticeData;
hemelb::lb::LBM<latticeType>* latticeBoltzmannModel;
hemelb::geometry::neighbouring::NeighbouringDataManager *neighbouringDataManager;
typedef hemelb::lb::lattices:: HEMELB_ADE_LATTICE advectionDiffusionLatticeType;
hemelb::geometry::LatticeData* advectionDiffusionData;
hemelb::lb::ADELBM<advectionDiffusionLatticeType>* advectionDiffusionModel;
hemelb::geometry::neighbouring::NeighbouringDataManager *advectionDiffusionDataManager;
const hemelb::net::IOCommunicator& ioComms;

private:
Expand Down Expand Up @@ -107,6 +118,7 @@ class SimulationMaster

hemelb::vis::Control* visualisationControl;
hemelb::extraction::IterableDataSource* propertyDataSource;
hemelb::extraction::IterableDataSource* advectionDiffusionDataSource;
hemelb::extraction::PropertyActor* propertyExtractor;

hemelb::net::phased::StepManager* stepManager;
Expand All @@ -116,6 +128,22 @@ class SimulationMaster
int steeringSessionId;
unsigned int imagesPeriod;
static const hemelb::LatticeTimeStep FORCE_FLUSH_PERIOD=1000;

std::map<hemelb::extraction::OutputField::FieldType, hemelb::extraction::IterableDataSource**>
dataSourceMap
= { { hemelb::extraction::OutputField::Pressure, &propertyDataSource },
{ hemelb::extraction::OutputField::Velocity, &propertyDataSource },
{ hemelb::extraction::OutputField::ShearStress, &propertyDataSource },
{ hemelb::extraction::OutputField::VonMisesStress, &propertyDataSource },
{ hemelb::extraction::OutputField::ShearRate, &propertyDataSource },
{ hemelb::extraction::OutputField::StressTensor, &propertyDataSource },
{ hemelb::extraction::OutputField::Traction, &propertyDataSource },
{ hemelb::extraction::OutputField::TangentialProjectionTraction, &propertyDataSource },
{ hemelb::extraction::OutputField::Concentration, &advectionDiffusionDataSource },
{ hemelb::extraction::OutputField::Flux, &advectionDiffusionDataSource },
{ hemelb::extraction::OutputField::MpiRank, &propertyDataSource }
};

};

#endif /* HEMELB_SIMULATIONMASTER_H */
Loading