diff --git a/src/GridGenerator/StreetPointFinder/StreetPointFinder.cpp b/src/GridGenerator/StreetPointFinder/StreetPointFinder.cpp index 9b6808e1c4fd5156debcf6107d3e4c62d111c706..05aef5d5e227c47024e46f406a5f45e3ee5383c0 100644 --- a/src/GridGenerator/StreetPointFinder/StreetPointFinder.cpp +++ b/src/GridGenerator/StreetPointFinder/StreetPointFinder.cpp @@ -471,7 +471,3 @@ void StreetPointFinder::writeMappingFile(std::string gridPath) *logging::out << logging::Logger::INFO_INTERMEDIATE << "done!\n"; } -void StreetPointFinder::dummy() -{ - int a = 5; -} \ No newline at end of file diff --git a/src/GridGenerator/StreetPointFinder/StreetPointFinder.h b/src/GridGenerator/StreetPointFinder/StreetPointFinder.h index f5dec13e9b9d2c09aaad776ec12bea0c34ac926e..177a4cbd2000585e4e0f78c284628915c484507a 100644 --- a/src/GridGenerator/StreetPointFinder/StreetPointFinder.h +++ b/src/GridGenerator/StreetPointFinder/StreetPointFinder.h @@ -6,8 +6,6 @@ #include "Core/PointerDefinitions.h" #include "Core/DataTypes.h" -//#include "Core/Logger/Logger.h" - #include <VirtualFluidsDefinitions.h> class Grid; @@ -59,10 +57,6 @@ struct VF_PUBLIC StreetPointFinder void writeSimulationFileSorted( std::string gridPath, real concentration, uint numberOfLevels, uint level ); void writeMappingFile( std::string gridPath ); - - - - void dummy(); }; diff --git a/src/Traffic/Junction/JunctionRandom.cpp b/src/Traffic/Junction/JunctionRandom.cpp index 8a1a941ed11f5756a8711f572870cd0e2bf3839d..fd81128047ad0a2e50a3ebabd0a6e9d057fd60d7 100644 --- a/src/Traffic/Junction/JunctionRandom.cpp +++ b/src/Traffic/Junction/JunctionRandom.cpp @@ -1,11 +1,13 @@ #include "JunctionRandom.h" -//#include <iostream> +#include <iostream> #include <algorithm> #include "TrafficMovement.h" -//#include "Utilities/invalidInput_error.h" -//#include "Utilities/VectorHelper.h" + +#include "Utilities/invalidInput_error.h" +#include "Utilities/VectorHelper.h" +#include "Utilities/safe_casting.h" JunctionRandom::JunctionRandom(const std::vector<uint> &inCellIndices, const std::vector<uint> &outCellIndices) @@ -13,7 +15,7 @@ JunctionRandom::JunctionRandom(const std::vector<uint> &inCellIndices, const std data.inCellIndices = inCellIndices; data.outCellIndices = outCellIndices; - uint inRoads = inCellIndices.size(); + uint inRoads = castSizeT_Uint(inCellIndices.size()); data.carCanEnter.resize(inRoads); std::fill(data.carCanEnter.begin(), data.carCanEnter.end(), true); @@ -69,7 +71,7 @@ uint JunctionRandom::getInCellsVectorIndex(uint cellIndex) if (it != data.inCellIndices.end()) { - return distance(data.inCellIndices.begin(), it); + return static_cast <uint> (distance(data.inCellIndices.begin(), it)); } throw std::runtime_error("The passed cell is not an incoming cell to this junction."); diff --git a/src/Traffic/Junction/JunctionRandom.h b/src/Traffic/Junction/JunctionRandom.h index 416d03e7f1a4fdee0723b6e67deaf7f3b28b146d..574e6098e6a42608fc3f76d9cf4c783951ca27cc 100644 --- a/src/Traffic/Junction/JunctionRandom.h +++ b/src/Traffic/Junction/JunctionRandom.h @@ -1,8 +1,8 @@ #pragma once -#include <VirtualFluidsDefinitions.h> - #include <random> #include <vector> + +#include <VirtualFluidsDefinitions.h> #include "Core/DataTypes.h" #include "Junction.h" diff --git a/src/Traffic/Output/CarDisplay.cpp b/src/Traffic/Output/CarDisplay.cpp index 6a22d2ae0aa82203bb8e91b63c8398bd809760c3..6543a9ca18897b6ca39f14e8434466c423c65297 100644 --- a/src/Traffic/Output/CarDisplay.cpp +++ b/src/Traffic/Output/CarDisplay.cpp @@ -1,10 +1,19 @@ #include "CarDisplay.h" +#include <fstream> +#include <iostream> +#include <iomanip> //formatting output streams +#include <windows.h> //for colourful console output +#include <stdexcept> + +#include "Utilities/VectorHelper.h" +#include "Utilities/safe_casting.h" + CarDisplay::CarDisplay(std::vector<int> **pcurrent, const uint safetyDistance): safetyDistance{ safetyDistance } { this->ppcurrent = pcurrent; - roadLength = (*pcurrent)->size(); + roadLength = castSizeT_Uint((*pcurrent)->size()); } diff --git a/src/Traffic/Output/CarDisplay.h b/src/Traffic/Output/CarDisplay.h index 34e84fb7d1a8cdc503eb4d701d9359123d76851c..5c7f4a643919e9d9d13ad65cc8440e12dbc42b08 100644 --- a/src/Traffic/Output/CarDisplay.h +++ b/src/Traffic/Output/CarDisplay.h @@ -1,19 +1,13 @@ #pragma once #include <VirtualFluidsDefinitions.h> -#include <fstream> -#include <iostream> #include <vector> #include <memory> -#include <iomanip> //formatting output streams -#include <windows.h> //for colourful console output -#include <stdexcept> #include "Sink/Sink.h" #include "Source/Source.h" #include "Junction/Junction.h" -#include "Utilities/VectorHelper.h" class VF_PUBLIC CarDisplay { public: diff --git a/src/Traffic/Output/ConcBySpeedAndAcceleration.cpp b/src/Traffic/Output/ConcBySpeedAndAcceleration.cpp index 6305b2fe4c9b89b6b195020f2f9ebe9ba421c9c0..17d54719ba00bdb2db248c7b5b4f9b23a9418bf5 100644 --- a/src/Traffic/Output/ConcBySpeedAndAcceleration.cpp +++ b/src/Traffic/Output/ConcBySpeedAndAcceleration.cpp @@ -1,20 +1,30 @@ #include "ConcBySpeedAndAcceleration.h" +#include <iostream> + ConcBySpeedAndAcceleration::ConcBySpeedAndAcceleration(uint roadlength, uint maxSpeed) { + std::cout << "using ConcBySpeedAndAcceleration::concentration for concentrations" << std::endl; concentration.resize(roadlength); - this->maxAcceleration = static_cast<real>(maxAcceleration); this->maxSpeed = static_cast<real>(maxSpeed); } ConcBySpeedAndAcceleration::ConcBySpeedAndAcceleration(uint roadlength, real * concArrayStart, uint maxSpeed) { - useLBMConcArray = true; - this->roadLength = roadlength; - this->concArrayStart = concArrayStart; - this->maxAcceleration = static_cast<real>(maxAcceleration); - this->maxSpeed = static_cast<real>(maxSpeed); + if (concArrayStart == nullptr) { + std::cout << "using ConcBySpeedAndAcceleration::concentration for concentrations" << std::endl; + concentration.resize(roadlength); + this->maxSpeed = static_cast<real>(maxSpeed); + } + else { + std::cout << "using passed array for concentrations" << std::endl; + useLBMConcArray = true; + this->roadLength = roadlength; + this->concArrayStart = concArrayStart; + this->maxSpeed = static_cast<real>(maxSpeed); + } + } // @@ -53,7 +63,7 @@ real ConcBySpeedAndAcceleration::chooseConc(uint oldSpeed, uint speed) return 0.75f; else if (speed < oldSpeed) //Brake return 0.45f; - else + else std::cerr << "couldn't choose driving state in ConcentrationBySpeedAndAcceleration::chooseConc" << std::endl; return -1.0f; } diff --git a/src/Traffic/Output/ConcBySpeedAndAcceleration.h b/src/Traffic/Output/ConcBySpeedAndAcceleration.h index 5fcc5568c3ea313d4ef0ad1ac0f1987382e6d887..bfd26c958cef69dcb41a26c866539b748f45e327 100644 --- a/src/Traffic/Output/ConcBySpeedAndAcceleration.h +++ b/src/Traffic/Output/ConcBySpeedAndAcceleration.h @@ -1,5 +1,4 @@ #pragma once -#include <VirtualFluidsDefinitions.h> #include "ConcentrationOutwriter.h" @@ -20,6 +19,5 @@ private: private: real maxSpeed = 0; - real maxAcceleration; }; diff --git a/src/Traffic/Output/ConcentrationByPosition.cpp b/src/Traffic/Output/ConcentrationByPosition.cpp index 39c6a07ad97ac1ea4c3004704839a91856427580..4fe7926da27b3a8e796f3716dc5ec7f195f786bf 100644 --- a/src/Traffic/Output/ConcentrationByPosition.cpp +++ b/src/Traffic/Output/ConcentrationByPosition.cpp @@ -1,17 +1,26 @@ #include "ConcentrationByPosition.h" - +#include <iostream> ConcentrationByPosition::ConcentrationByPosition(uint roadlength, uint maxSpeed) { + std::cout << "using ConcentrationByPosition::concentration for concentrations" << std::endl; concentration.resize(roadlength); } ConcentrationByPosition::ConcentrationByPosition(uint roadlength, real * concArrayStart, uint maxSpeed) { - useLBMConcArray = true; - this->roadLength = roadLength; - this->concArrayStart = concArrayStart; + if (concArrayStart == nullptr) { + std::cout << "using ConcentrationByPosition::concentration for concentrations" << std::endl; + concentration.resize(roadlength); + } + else { + std::cout << "using passed array for concentrations" << std::endl; + useLBMConcArray = true; + this->roadLength = roadLength; + this->concArrayStart = concArrayStart; + } + } //void ConcentrationByPosition::calculateConcFromCarDistribution(const std::vector<int>& currentCarDistribution) diff --git a/src/Traffic/Output/ConcentrationByPosition.h b/src/Traffic/Output/ConcentrationByPosition.h index 939ef58fa1b821727b11bcff172bc719f5b3aa74..d87ded6d87f27f3062e7b767a108454eea336b6e 100644 --- a/src/Traffic/Output/ConcentrationByPosition.h +++ b/src/Traffic/Output/ConcentrationByPosition.h @@ -1,5 +1,4 @@ #pragma once -#include <VirtualFluidsDefinitions.h> #include "ConcentrationOutwriter.h" diff --git a/src/Traffic/Output/ConcentrationOutwriter.cpp b/src/Traffic/Output/ConcentrationOutwriter.cpp index bd2f03914de3836b1c911b1f32102748bea4797e..6b6301d3bcba5e18ec30567f35facbcaff73e824 100644 --- a/src/Traffic/Output/ConcentrationOutwriter.cpp +++ b/src/Traffic/Output/ConcentrationOutwriter.cpp @@ -1,5 +1,8 @@ #include "ConcentrationOutwriter.h" +#include <iostream> +#include <iomanip> //formatting output streams +#include <windows.h> //for colourful console output void ConcentrationOutwriter::resetConcentrations() { @@ -7,7 +10,7 @@ void ConcentrationOutwriter::resetConcentrations() for (real* p = concArrayStart; p < concArrayStart + roadLength; ++p) *p = 0.0; else - std::fill(concentration.begin(), concentration.end(), 0.0); + std::fill(concentration.begin(), concentration.end(), 0.0f); } diff --git a/src/Traffic/Output/ConcentrationOutwriter.h b/src/Traffic/Output/ConcentrationOutwriter.h index 2df13490736f52cf73b0eb94c360a1f6626cd915..8908b508ced02f270952a4819bbccac9c7063108 100644 --- a/src/Traffic/Output/ConcentrationOutwriter.h +++ b/src/Traffic/Output/ConcentrationOutwriter.h @@ -1,9 +1,6 @@ #pragma once #include <vector> -#include <iostream> -#include <iomanip> //formatting output streams -#include <windows.h> //for colourful console output #include <VirtualFluidsDefinitions.h> #include "Core/DataTypes.h" diff --git a/src/Traffic/RoadNetwork/RoadMaker.cpp b/src/Traffic/RoadNetwork/RoadMaker.cpp index bdd8822cdb33fcc4fa07ac246a4b879551c31b1f..b9b84f65e231e8540ad27b0ad6f96ce8cf17107d 100644 --- a/src/Traffic/RoadNetwork/RoadMaker.cpp +++ b/src/Traffic/RoadNetwork/RoadMaker.cpp @@ -1,5 +1,8 @@ #include "RoadMaker.h" +#include "Utilities/VectorHelper.h" +#include "Utilities/invalidInput_error.h" +#include "Utilities/safe_casting.h" //random vehicle Distribution RoadMaker::RoadMaker(const uint roadLength, const uint maxVelocity, uint vehicleLength, const real vehicleDensity) @@ -24,7 +27,7 @@ RoadMaker::RoadMaker(const uint roadLength, const uint maxVelocity, uint vehicle //given vehicle distribution RoadMaker::RoadMaker(const std::vector<int> vehicleDistribution, const uint maxVelocity, uint vehicleLength) { - this->roadLength = vehicleDistribution.size(); + this->roadLength = castSizeT_Uint(vehicleDistribution.size()); this->maxVelocity = maxVelocity; initVehicleLength(vehicleLength); @@ -168,7 +171,7 @@ void RoadMaker::setJunctionAsNeighbor(std::unique_ptr<Junction> & junction) { //set the junction as neighbor of the incoming cells - int junctionIndex = -1000 - junctions.size(); //value range: -1000 to -1999 + int junctionIndex = -1000 - castSizeT_Int(junctions.size()); //value range: -1000 to -1999 std::vector<uint> inCells = junction->getInCellIndices(); try { @@ -221,7 +224,7 @@ void RoadMaker::setSinkAsNeighbor(std::unique_ptr<Sink> & sink) { //set the sink as neighbor of the incoming cell - int sinkIndex = -2000 - sinks.size(); //value range: -2000 to -2999 + int sinkIndex = -2000 - castSizeT_Int(sinks.size()); //value range: -2000 to -2999 uint sinkCell = sink->getIndex(); if (sinkCell >= roadLength) throw invalidInput_error("The index of a sink ist greater than the roadLength."); diff --git a/src/Traffic/RoadNetwork/RoadMaker.h b/src/Traffic/RoadNetwork/RoadMaker.h index 52569b745a50cc413750bc2a0f10a7e1700aa22a..5029d922b7963e432d9ead25c51aa9cd29475451 100644 --- a/src/Traffic/RoadNetwork/RoadMaker.h +++ b/src/Traffic/RoadNetwork/RoadMaker.h @@ -1,8 +1,10 @@ #pragma once #include <random> + #include "RoadNetworkData.h" + #include "Utilities/RandomHelper.h" -#include <VirtualFluidsDefinitions.h> + struct VF_PUBLIC RoadMaker : public RoadNetworkData diff --git a/src/Traffic/RoadNetwork/RoadNetworkData.h b/src/Traffic/RoadNetwork/RoadNetworkData.h index c744b08bda928b3775067a284ed7dcd4138b9978..1a19822bf4d1d303a262abdbc77809d46880011a 100644 --- a/src/Traffic/RoadNetwork/RoadNetworkData.h +++ b/src/Traffic/RoadNetwork/RoadNetworkData.h @@ -2,11 +2,9 @@ #include <memory> #include <vector> -#include "Utilities/VectorHelper.h" -#include "Utilities/invalidInput_error.h" - #include <VirtualFluidsDefinitions.h> + #include "Source/Source.h" #include "Sink/Sink.h" #include "Junction/Junction.h" diff --git a/src/Traffic/Sink/Sink.h b/src/Traffic/Sink/Sink.h index ce75f248afce93b217a80b079ab42ac1fbe18bac..4954b40eb6992b45f2b35d6b7f2369426ed63680 100644 --- a/src/Traffic/Sink/Sink.h +++ b/src/Traffic/Sink/Sink.h @@ -1,7 +1,6 @@ #pragma once #include "SinkData.h" -#include <VirtualFluidsDefinitions.h> class VF_PUBLIC Sink { diff --git a/src/Traffic/Sink/SinkData.h b/src/Traffic/Sink/SinkData.h index 08f4c633c8d6c40ff0e3a21c47ef369be49debfa..fe573691cfc78af999b6efc8a817df3c0ebfb311 100644 --- a/src/Traffic/Sink/SinkData.h +++ b/src/Traffic/Sink/SinkData.h @@ -1,7 +1,5 @@ #pragma once -#include <memory> -#include <vector> #include <VirtualFluidsDefinitions.h> #include "Core/DataTypes.h" diff --git a/src/Traffic/Sink/SinkRandom.cpp b/src/Traffic/Sink/SinkRandom.cpp index 2d7894104d1324be8e5d63928a668cadd4909407..63a792ac2dc7f2a03d78852e43de68c563ff19eb 100644 --- a/src/Traffic/Sink/SinkRandom.cpp +++ b/src/Traffic/Sink/SinkRandom.cpp @@ -1,6 +1,6 @@ #include "SinkRandom.h" - +#include "Utilities/invalidInput_error.h" SinkRandom::SinkRandom(uint sinkIndex, real sinkBlockedPossibility) { diff --git a/src/Traffic/Sink/SinkRandom.h b/src/Traffic/Sink/SinkRandom.h index bbb5399529b4008f066b5ab8b288d14403af5999..ed7426103b034f2e5f1549e169844897c0abadf0 100644 --- a/src/Traffic/Sink/SinkRandom.h +++ b/src/Traffic/Sink/SinkRandom.h @@ -1,13 +1,11 @@ #pragma once -#include <VirtualFluidsDefinitions.h> - #include <iostream> #include <random> -#include "Utilities/RandomHelper.h" #include "Sink.h" -#include "Utilities/invalidInput_error.h" + +#include "Utilities/RandomHelper.h" class VF_PUBLIC SinkRandom: public Sink diff --git a/src/Traffic/TrafficMovement.cpp b/src/Traffic/TrafficMovement.cpp index 7a5beff95b852671563e6f3f328d218ab7140152..47f046157792216770bb89b06d92707ee302243a 100644 --- a/src/Traffic/TrafficMovement.cpp +++ b/src/Traffic/TrafficMovement.cpp @@ -1,5 +1,13 @@ #include "TrafficMovement.h" +#include <iostream> +#include <stdexcept> + +#include "Utilities/invalidInput_error.h" +#include "Utilities/VectorHelper.h" +#include "Utilities/RandomHelper.h" +#include "Output/ConcentrationOutwriter.h" +#include "Output/CarDisplay.h" TrafficMovement::TrafficMovement(std::unique_ptr<RoadNetworkData> road, const real dawdlePossibility) { diff --git a/src/Traffic/TrafficMovement.h b/src/Traffic/TrafficMovement.h index 8551fa74cd843aa814add5570826dcb66b42f60b..f3f9a354d5c8902e3ade4c5e908905789b5c9172 100644 --- a/src/Traffic/TrafficMovement.h +++ b/src/Traffic/TrafficMovement.h @@ -1,22 +1,18 @@ #pragma once -#include <VirtualFluidsDefinitions.h> - -#include <iostream> #include <vector> #include <random> #include <memory> -#include <stdexcept> -#include "Utilities/invalidInput_error.h" -#include "Utilities/VectorHelper.h" -#include "Utilities/RandomHelper.h" +#include <VirtualFluidsDefinitions.h> +#include "Core/DataTypes.h" + #include "RoadNetwork/RoadNetworkData.h" -#include "Output/ConcentrationOutwriter.h" -#include "Output/CarDisplay.h" +class ConcentrationOutwriter; +class CarDisplay; -class VF_PUBLIC TrafficMovement +class VF_PUBLIC TrafficMovement { public: TrafficMovement(std::unique_ptr<RoadNetworkData> road, const real dawdlePossibility); @@ -90,7 +86,7 @@ private: std::vector<int> *pcurrent; std::vector<int> *pnext; - std::vector<int> *pdummy; + std::vector<int> *pdummy; real dawdlePossibility; diff --git a/src/Traffic/TrafficMovementFactory.cpp b/src/Traffic/TrafficMovementFactory.cpp index 9c61a149630c4e83d458c21f9fecd159ec51980b..5c0f71378b39038a7f85ed8257ea65455369b171 100644 --- a/src/Traffic/TrafficMovementFactory.cpp +++ b/src/Traffic/TrafficMovementFactory.cpp @@ -1,7 +1,7 @@ #include "TrafficMovementFactory.h" +#include <iostream> -//#include "GridGenerator/StreetPointFinder/StreetPointFinder.h" #include "GridGenerator/StreetPointFinder/JunctionReader.h" #include "GridGenerator/StreetPointFinder/SourceReader.h" #include "GridGenerator/StreetPointFinder/SinkReader.h" @@ -13,13 +13,14 @@ #include "Sink/SinkRandom.h" #include "Output/ConcentrationByPosition.h" #include "Output/ConcBySpeedAndAcceleration.h" +#include "Utilities/safe_casting.h" TrafficMovementFactory::TrafficMovementFactory() { } -void TrafficMovementFactory::initTrafficMovement(real * pconcArrayStart, uint concArraySize) +void TrafficMovementFactory::initTrafficMovement(real * pconcArrayStart) { //Variables @@ -47,7 +48,7 @@ void TrafficMovementFactory::initTrafficMovement(real * pconcArrayStart, uint co //calculate RoadLength uint roadLength = 0; - uint numberOfStreets = finder.streets.size(); + uint numberOfStreets = castSizeT_Uint(finder.streets.size()); for (uint i = 0; i < numberOfStreets; i++) { roadLength += finder.streets[i].numberOfCells; } @@ -86,8 +87,7 @@ void TrafficMovementFactory::initTrafficMovement(real * pconcArrayStart, uint co //init ConcentrationOutwriter - std::unique_ptr<ConcentrationOutwriter> writer = std::make_unique<ConcBySpeedAndAcceleration>(ConcBySpeedAndAcceleration(simulator->getRoadLength(), simulator->getMaxVelocity())); - //std::unique_ptr<ConcentrationOutwriter> writer = std::make_unique<ConcentrationByPosition>(ConcentrationByPosition(simulator->getRoadLength()), pconcArrayStart, concArraySize); + std::unique_ptr<ConcentrationOutwriter> writer = std::make_unique<ConcBySpeedAndAcceleration>(ConcBySpeedAndAcceleration(simulator->getRoadLength(), pconcArrayStart)); simulator->setConcentrationOutwriter(move(writer)); //prepare writing to vtk @@ -99,9 +99,9 @@ void TrafficMovementFactory::initTrafficMovement(real * pconcArrayStart, uint co } -void TrafficMovementFactory::calculateTimestep(uint step) +void TrafficMovementFactory::calculateTimestep(uint step, uint stepForVTK) { simulator->calculateTimestep(step); simulator->visualizeVehicleLengthForVTK(); - finder.writeVTK(outputPath + outputFilename + "_" + std::to_string(step) + ".vtk", *cars); + finder.writeVTK(outputPath + outputFilename + "_" + std::to_string(stepForVTK) + ".vtk", *cars); } \ No newline at end of file diff --git a/src/Traffic/TrafficMovementFactory.h b/src/Traffic/TrafficMovementFactory.h index 622276364e9455ddcb82cabd16dde4a7510c955a..4db4d0104fce089c14dbca322ddc4a88c4912056 100644 --- a/src/Traffic/TrafficMovementFactory.h +++ b/src/Traffic/TrafficMovementFactory.h @@ -1,7 +1,6 @@ # pragma once //#include <VirtualFluidsDefinitions.h> -#include <iostream> #include <vector> #include <memory> @@ -15,8 +14,8 @@ class VF_PUBLIC TrafficMovementFactory { public: TrafficMovementFactory(); ~TrafficMovementFactory() {}; - void initTrafficMovement(real * pconcArrayStart = nullptr, uint concArraySize = 0); - void calculateTimestep(uint step); + void initTrafficMovement(real * pconcArrayStart = nullptr); + void calculateTimestep(uint step, uint stepForVTK); private: diff --git a/src/Traffic/Utilities/VectorHelper.h b/src/Traffic/Utilities/VectorHelper.h index bda0acf9edcaba1193b6ba22dc465ffdafe8848c..21161e670f70bbe0be69c9ae39000916359afa73 100644 --- a/src/Traffic/Utilities/VectorHelper.h +++ b/src/Traffic/Utilities/VectorHelper.h @@ -1,13 +1,13 @@ #pragma once -#include <VirtualFluidsDefinitions.h> -#include "Core/DataTypes.h" - #include <vector> #include <iostream> #include <windows.h> //for colourful console output #include <iomanip> //formatting output streams +#include <VirtualFluidsDefinitions.h> +#include "Core/DataTypes.h" + class VF_PUBLIC VectorHelper { public: diff --git a/src/Traffic/Utilities/safe_casting.h b/src/Traffic/Utilities/safe_casting.h new file mode 100644 index 0000000000000000000000000000000000000000..1e921f9df4751efd9813eeef270a40a6e6671650 --- /dev/null +++ b/src/Traffic/Utilities/safe_casting.h @@ -0,0 +1,21 @@ +#pragma once + +#include <stdexcept> +#include "Core/DataTypes.h" + + +static uint castSizeT_Uint(size_t number) { + if (number > UINT_MAX) + { + throw std::overflow_error("number is larger than UINT_MAX"); + } + return static_cast<uint>(number); +} + +static int castSizeT_Int(size_t number) { + if (number > INT_MAX) + { + throw std::overflow_error("number is larger than INT_MAX"); + } + return static_cast<uint>(number); +} \ No newline at end of file diff --git a/src/VirtualFluids_GPU/LBM/Simulation.cpp b/src/VirtualFluids_GPU/LBM/Simulation.cpp index b163b32f5a3c94b1b6609c7f4b64c4937de35f3f..85de964767a3d2e436556ed79054e771ceaacff7 100644 --- a/src/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/VirtualFluids_GPU/LBM/Simulation.cpp @@ -63,6 +63,8 @@ #include "Output/DataWriter.h" #include "Kernel/KernelFactory/KernelFactory.h" #include "Kernel/Kernel.h" +////////////////////////////////////////////////////////////////////////// +#include "Traffic/TrafficMovementFactory.h" Simulation::Simulation() { @@ -172,6 +174,11 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std //////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// + //Init Traffic by Anna + ////////////////////////////////////////////////////////////////////////// + factory = new TrafficMovementFactory(); + factory->initTrafficMovement(/*para->getParH(0)->c*/); ////////////////////////////////////////////////////////////////////////// @@ -1057,6 +1064,11 @@ void Simulation::run() // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Calculate Traffic by Anna + if (t % 100 == 0) + factory->calculateTimestep(t/100, t); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////// comp @@ -1086,7 +1098,7 @@ void Simulation::run() QADDirichletDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, para->getParD(0)->d0SP.f[0], para->getParD(0)->d27.f[0], para->getParD(0)->TempVel.tempPulse, para->getParD(0)->diffusivity, para->getParD(0)->concIndex, para->getParD(0)->QGeom.q27[0], - para->getParD(0)->numberOfPointsConc, para->getParD(0)->numberOfPointsConc, para->getParD(0)->omega, + para->getParD(0)->QGeom.kQ, para->getParD(0)->numberOfPointsConc, para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); getLastCudaError("QADDirichletDev27 execution failed"); diff --git a/src/VirtualFluids_GPU/LBM/Simulation.h b/src/VirtualFluids_GPU/LBM/Simulation.h index e5345fe2af137b480a02255990b73fb86826969f..73e350a5b17e27e8b2f7609cb6bfcb824b47f5b7 100644 --- a/src/VirtualFluids_GPU/LBM/Simulation.h +++ b/src/VirtualFluids_GPU/LBM/Simulation.h @@ -21,6 +21,7 @@ class RestartPostprocessor; class ForceCalculations; class DataWriter; class Kernel; +class TrafficMovementFactory; class VF_PUBLIC Simulation @@ -89,6 +90,7 @@ protected: //////////////////////////////////////////////////////////////////////////// EnstrophyAnalyzer *enstrophyWriter; //////////////////////////////////////////////////////////////////////////// + TrafficMovementFactory *factory; }; #endif diff --git a/targets/apps/LBM/TrafficTest/TrafficTest.cpp b/targets/apps/LBM/TrafficTest/TrafficTest.cpp index 3369ed6b6cde7aa5f77945fbe34d24d07ec89170..cf974aa7a2bc0eb42fc272b0629906ba4ac609df 100644 --- a/targets/apps/LBM/TrafficTest/TrafficTest.cpp +++ b/targets/apps/LBM/TrafficTest/TrafficTest.cpp @@ -12,21 +12,21 @@ int main() { - uint numberOfTimesteps = 50; + uint numberOfTimesteps = 5; //Logger + logging::Logger::addStream(&std::cout); + logging::Logger::setDebugLevel(logging::Logger::Level::INFO_LOW); + logging::Logger::timeStamp(logging::Logger::ENABLE); + logging::Logger::enablePrintedRankNumbers(logging::Logger::ENABLE); - //logging::Logger::addStream(&std::cout); - //logging::Logger::setDebugLevel(logging::Logger::Level::INFO_LOW); - //logging::Logger::timeStamp(logging::Logger::ENABLE); - //logging::Logger::enablePrintedRankNumbers(logging::Logger::ENABLE); TrafficMovementFactory factory = TrafficMovementFactory(); factory.initTrafficMovement(); for (uint step = 1; step <= numberOfTimesteps; step++) { - factory.calculateTimestep(step); + factory.calculateTimestep(step,step); } std::cout << std::endl << std::endl; diff --git a/targets/libs/VirtualFluids_GPU/CMakeLists.txt b/targets/libs/VirtualFluids_GPU/CMakeLists.txt index 0a5661ab452449c08f2510c555c551fed39967f2..c350a2be2fef02cd87dc3d0db31c4aec6223f107 100644 --- a/targets/libs/VirtualFluids_GPU/CMakeLists.txt +++ b/targets/libs/VirtualFluids_GPU/CMakeLists.txt @@ -3,16 +3,18 @@ setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) set(linkDirectories "") IF(MSVC) - set(libsToLink ws2_32 GridGenerator VirtualFluidsBasics Core) # ws_32 throws an error on Phoenix + set(libsToLink ws2_32 GridGenerator VirtualFluidsBasics Core Traffic) # ws_32 throws an error on Phoenix ELSE(MSVC) - set(libsToLink GridGenerator VirtualFluidsBasics Core) + set(libsToLink GridGenerator VirtualFluidsBasics Core Traffic) ENDIF(MSVC) set(includeDirectories ${CMAKE_SOURCE_DIR}/src/${targetName} ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/GridGenerator ${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics - ${CMAKE_SOURCE_DIR}/src/Core ) + ${CMAKE_SOURCE_DIR}/src/Core + ${CMAKE_SOURCE_DIR}/src/Traffic + ) #glob files and save in MY_SRCS include(CMakePackage.cmake)