Line data Source code
1 : #include "SimulationConfigBuilder.hpp" 2 : #include "ExceptionWithLocation.hpp" 3 : 4 : namespace cell 5 : { 6 : 7 24 : void SimulationConfigBuilder::addDisc(const std::string& discType, Position position, Velocity velocity) 8 : { 9 48 : simulationConfig_.discs.push_back( 10 24 : config::Disc{.discTypeName = discType, .x = position.x, .y = position.y, .vx = velocity.x, .vy = velocity.y}); 11 24 : } 12 : 13 9 : void SimulationConfigBuilder::useDistribution(bool useDistribution) 14 : { 15 9 : simulationConfig_.useDistribution = useDistribution; 16 9 : } 17 : 18 5 : void SimulationConfigBuilder::setDiscCount(std::string membraneTypeName, int count) 19 : { 20 5 : auto& membraneType = findMembraneTypeByName(simulationConfig_, membraneTypeName); 21 5 : membraneType.discCount = count; 22 5 : } 23 : 24 5 : void SimulationConfigBuilder::setDistribution(std::string membraneTypeName, 25 : const std::unordered_map<std::string, double>& distribution) 26 : { 27 5 : auto& membraneType = findMembraneTypeByName(simulationConfig_, membraneTypeName); 28 5 : membraneType.discTypeDistribution = distribution; 29 5 : } 30 : 31 40 : void SimulationConfigBuilder::addDiscType(const std::string& name, Radius radius, Mass mass) 32 : { 33 40 : simulationConfig_.discTypes.push_back(config::DiscType{.name = name, .radius = radius.value, .mass = mass.value}); 34 40 : } 35 : 36 14 : void SimulationConfigBuilder::addMembraneType( 37 : const std::string& name, Radius radius, 38 : const std::unordered_map<std::string, MembraneType::Permeability>& permeabilityMap) 39 : { 40 14 : simulationConfig_.membraneTypes.push_back( 41 28 : config::MembraneType{.name = name, .radius = radius.value, .permeabilityMap = permeabilityMap}); 42 14 : } 43 : 44 15 : void SimulationConfigBuilder::addMembrane(const std::string& membraneTypeName, Position position) 45 : { 46 30 : simulationConfig_.membranes.push_back( 47 15 : config::Membrane{.membraneTypeName = membraneTypeName, .x = position.x, .y = position.y}); 48 15 : } 49 : 50 11 : void SimulationConfigBuilder::addReaction(const std::string& educt1, const std::string& educt2, 51 : const std::string& product1, const std::string& product2, 52 : Probability probability) 53 : { 54 22 : simulationConfig_.reactions.push_back(config::Reaction{.educt1 = educt1, 55 : .educt2 = educt2, 56 : .product1 = product1, 57 : .product2 = product2, 58 11 : .probability = probability.value}); 59 11 : } 60 : 61 0 : void SimulationConfigBuilder::setCellMembraneType( 62 : Radius radius, const std::unordered_map<std::string, MembraneType::Permeability>& permeabilityMap) 63 : { 64 0 : simulationConfig_.cellMembraneType.radius = radius.value; 65 0 : simulationConfig_.cellMembraneType.permeabilityMap = permeabilityMap; 66 0 : } 67 : 68 1 : void SimulationConfigBuilder::setTimeStep(double simulationTimeStep) 69 : { 70 1 : simulationConfig_.simulationTimeStep = simulationTimeStep; 71 1 : } 72 : 73 1 : void SimulationConfigBuilder::setTimeScale(double simulationTimeScale) 74 : { 75 1 : simulationConfig_.simulationTimeScale = simulationTimeScale; 76 1 : } 77 : 78 1 : void SimulationConfigBuilder::setMostProbableSpeed(double mostProbableSpeed) 79 : { 80 1 : simulationConfig_.mostProbableSpeed = mostProbableSpeed; 81 1 : } 82 : 83 12 : const SimulationConfig& SimulationConfigBuilder::getSimulationConfig() const 84 : { 85 12 : return simulationConfig_; 86 : } 87 : 88 : } // namespace cell