libbio
Loading...
Searching...
No Matches
Solute.h
Go to the documentation of this file.
1/*
2 * This file is a part of the Biology project by eons LLC.
3 * Biology (aka Develop Biology) is a framework for approaching software
4 * development from a natural sciences perspective.
5 *
6 * Copyright (C) 2023 Séon O'Shannon & eons LLC
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Affero General Public License as
10 * published by the Free Software Foundation, either version 3 of the
11 * License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
22#pragma once
23
32
33namespace bio {
34namespace chemical {
35
36class Solution;
37
72class Solute :
73 public chemical::Class< Solute >,
74 public chemical::EnvironmentDependent< Solution >,
75 public Arrangement< Pointer< Solute > >,
76 virtual public physical::Periodic
77{
78public:
83
85 chemical,
86 Solute,
87 filter::Chemical()
88 )
89
97
106 Solute(
108 const DiffusionTime& diffusionTime = diffusion::time::Destruction(),
109 const DiffusionEffort& diffusionEffort = diffusion::effort::Active()
110 );
111
115 virtual ~Solute();
116
124
130 {
131 return GetDissolvedSubstance();
132 }
133
138 {
139 return GetDissolvedSubstance();
140 }
141
147
152
157 virtual Concentration GetConcentration() const;
158
162 virtual void Diffuse() const;
163
169 virtual Code Crest();
170
178 virtual Code MixWith(const Solute& other);
179
188
195
199 virtual Index GetIndexInParentSolution() const;
200
206
213 virtual void SetDiffusionTime(const DiffusionTime& diffusionTime);
214
218 virtual DiffusionTime GetDiffusionTime() const;
219
226 virtual void SetDiffusionEffort(const DiffusionEffort& diffusionEffort);
227
231 virtual DiffusionEffort GetDiffusionEffort() const;
232
233protected:
234
239
240 //Mutable for use in Increment & Decrement
243
246
251 virtual void Destructor();
252
253private:
257 void CommonConstructor();
258
259 //For creation & deletion.
260 friend class Solution;
261};
262
263} //chemical namespace
264} //bio namespace
#define BIO_DISAMBIGUATE_ALL_CLASS_METHODS(ns, caller)
Definition ClassMethodMacros.h:112
#define BIO_DEFAULT_IDENTIFIABLE_CONSTRUCTORS_WITH_COMMON_CONSTRUCTOR(ns, class,...)
Definition chemical/macro/ConstructorMacros.h:65
Definition Arrangement.h:42
Definition Pointer.h:115
Definition chemical/common/Class.h:52
Definition EnvironmentDependent.h:43
Definition Solute.h:77
virtual void SetEnvironment(Pointer< Solution > environment)
Definition Solute.cpp:237
DiffusionTime mDiffusionTime
Definition Solute.h:244
virtual void Diffuse() const
Definition Solute.cpp:189
Index mIndexInParent
Definition Solute.h:242
virtual Code MixWith(const Solute &other)
Definition Solute.cpp:222
virtual void SetDiffusionEffort(const DiffusionEffort &diffusionEffort)
Definition Solute.cpp:292
virtual Code Crest()
Definition Solute.cpp:212
Pointer< Substance > GetDissolvedSubstance()
Definition Solute.cpp:165
virtual void Destructor()
Definition Solute.cpp:252
virtual DiffusionTime GetDiffusionTime() const
Definition Solute.cpp:287
Pointer< Substance > mDissolvedSubstance
Definition Solute.h:238
virtual void SetIndexInParentSolution(Index indexInParentSolution)
Definition Solute.cpp:277
virtual DiffusionEffort GetDiffusionEffort() const
Definition Solute.cpp:297
virtual Concentration GetConcentration() const
Definition Solute.cpp:183
Pointer< Solute > mParentSolute
Definition Solute.h:241
virtual void SetDiffusionTime(const DiffusionTime &diffusionTime)
Definition Solute.cpp:282
DiffusionEffort mDiffusionEffort
Definition Solute.h:245
virtual Index GetIndexInParentSolution() const
Definition Solute.cpp:247
Definition Solution.h:64
Definition Substance.h:47
Definition Periodic.h:37
uint16_t Concentration
Definition chemical/common/Types.h:90
Definition FinalCell.h:29
uint32_t Index
Definition common/container/common/Types.h:31