Commit 5797e90c authored by jouke's avatar jouke
Browse files

Fix for respiration when cortex and steel are split up and new template

is used
parent a995b052
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -3,10 +3,10 @@
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="https://rootmodels.gitlab.io/opensimroot/XML/SimulaXMLSchema.xsd"
	explicitCoupling="true"
	defaultStartingTimeStep="0.1"
	synchronizationTimeStep="0.1" 
	defaultMaximumTimeStep="0.1"
	defaultMinimumTimeStep="0.1">
	defaultStartingTimeStep="0.2"
	synchronizationTimeStep="0.2" 
	defaultMaximumTimeStep="0.2"
	defaultMinimumTimeStep="0.2">
	<SimulaBase name="atmosphere">
	</SimulaBase>
	<SimulaBase name="soil">
@@ -21,6 +21,11 @@
	<SimulaIncludeFile fileName="templates/plantTemplateFullModel.xml" />
	<SimulaIncludeFile fileName="environments/CKA/CKA-barley.xml" />

	<!--  for faster testing purposes -->
    <SimulaDirective path="/environment/dimensions">
      <SimulaConstant name="resolution" type="coordinate" replacesPreviousDeclaration="true"> 2 2 2 </SimulaConstant>
    </SimulaDirective>

	<SimulaIncludeFile
		fileName="templates/environmentTemplate.IncludeEvapotranspiration.xml" />
	<SimulaIncludeFile
+12 −5
Original line number Diff line number Diff line
@@ -83,8 +83,10 @@ RootSegmentRespirationRate::RootSegmentRespirationRate(SimulaDynamic* pSD):Total
	if (pSD->getName() == "rootSegmentRespiration" && relativeRespirationSimulator) {
		//add up steel and cortex
		mode = 1;
		sizeSimulator = pSD->existingSibling(
				"rootSegmentRespirationCortex");
		sizeSimulator = pSD->getSibling("rootSegmentRespirationCortex",relativeRespirationSimulator->getUnit());
		if(relativeRespirationSimulator->getUnit()=="g"){
			++mode;
		}
	} else {
		relativeRespirationSimulator = parameters->existingChild(
				"relativeRespiration" + section);
@@ -159,11 +161,16 @@ void RootSegmentRespirationRate::calculate(const Time &t, double &rate) {
		return;
	}

	if (mode == 1) {
	if (mode > 0) {
		//just add up cortex and steel respiration
		double steel, cortex;
		if(mode>1){
			relativeRespirationSimulator->getRate(t, steel);
			sizeSimulator->getRate(t, cortex);
		}else{
			relativeRespirationSimulator->get(t, steel);
			sizeSimulator->get(t, cortex);
		}
		rate = steel + cortex;
		return;
	}