Before we add more subsystems from the library to our system, we have to discuss the concept of "compound mass" which is used in V-HAB. You already learned that matter in V-HAB is represented as a vector where each entry represents a specific substance. For example cabin air which consists of CO2, O2, N2 and H2O has four non zero entries in
this.toStores.Cabin.toPhases.CabinAir.afMass
So far the discussed matter was quite straight forward, however if we want to include food and a human in our system it becomes a bit more complicated. For example, if different food stock like tomatos, carrots, potatoes etc should be used, then these could be represent as a specific substance in V-HAB which receives its own entry in the afMass vector. However, the composition of these substances is not actually constant. An other maybe easier example for this is urine. If urine contains a higher amount of urea and other solids it is yellow, if it contains a high amount of water it is nearly clear. Now if we just used a seperate entry in the existing vector, urine would always be urine and there would be no way to distinguish the actual composition or handle it dynamically. In order to solve this problem the concept of compound mass was introduced. A compound mass in V-HAB is a substance which does not have a fix composition but consists of various other substances. In order to represent this, the parameter arCompoundMass is used, which contains a quadratic matrix where each dimension is the size of the afMass vector where each row contains the composition of the corresponding substance and each column again represents the corresponding entry in the matter table. Actually the food we added to the food store in our system is already a compound mass. You can check its composition using the following code in the Example system:
this.toStores.Food.toPhases.Food.arCompoundMass(oLastSimObj.oSimulationContainer.oMT.tiN2I.Food,:)
Food is modelled as a compound mass consisting of water, proteins, carbohydrates, fats etc. For example if you want to know the curren water mass ratio (which should be 0.4636) in the food you can use:
this.toStores.Food.toPhases.Food.arCompoundMass(this.oMT.tiN2I.Food,this.oMT.tiN2I.H2O)
These ratios are not fix but can be changed by models. Now why are we discussing this? Because it is important to understand this concept as it is e.g. used by the V-HAB human model (remember the example of urine). However, different from food not all compound masses are predefined in V-HAB, as other users may want to use a different base composition. Predefined compound masses are the mentioned food and all plants. So for our system we have to add urine and feces as compound mass. This must be done in the setup before the system itself is defined (before xxyy.introduction.systems.Example(this.oSimulationContainer,'Example') is called). You can use the following code for this:
% Water content of Urine and Feces is based on BVAD, not all % possible components of both substances defined here trBaseCompositionUrine.H2O = 0.9644; trBaseCompositionUrine.CH4N2O = 0.0356; this.oSimulationContainer.oMT.defineCompoundMass(this, 'Urine', trBaseCompositionUrine) trBaseCompositionFeces.H2O = 0.7576; trBaseCompositionFeces.DietaryFiber = 0.2424; this.oSimulationContainer.oMT.defineCompoundMass(this, 'Feces', trBaseCompositionFeces)
The ratios defined here are only the base values used in case any phase is initialized with Urine or Feces as mass. Within the simulation, these value can change and even other substances can be added by V-HAB. For example, urine will also consist of NaCl. Of course, you can also define your own compound masses if you need.