SMML Component Example




<?xml version="1.0"?>

<!DOCTYPE compound SYSTEM "file:mml.dtd">

<compound id="CONSUMERS_module" name="CONSUMERS_module" >


	<atom name="CONS_BIOM" id="CONS_BIOM" status="private"  type="state"  >

		<port type="input" name="CONS_INGEST" />
		<port type="input" name="CONS_EGEST" />
		<port type="input" name="CONS_MORT_BIOM" />
		<port type="input" name="CONS_RESPIRATION" />

		<dynamic  event="integrate"  type="code"  >

			<code> <![CDATA[ ( ( ( CONS_INGEST-CONS_EGEST )-CONS_MORT_BIOM )-CONS_RESPIRATION ) ]]>
			</code>

		</dynamic>

		<port type="input" name="P1_CONS_IC" />
		<port type="input" name="CELL_SIZE" />

		<dynamic  event="init"  type="code"  >

			<doc> <![CDATA[   CARBON BIOMASS OF AN AGGREGATED CONSUMER.  UNITS = KGC.CONSUMERS EXCLUDE THE MICRO ORGANISMS WHICH ARE ACCOUNTED FOR IN THE RESPIRATION FLUXES ]]>
			</doc>

			<code> <![CDATA[ ( ( P1_CONS_IC*0.001 )*CELL_SIZE ) ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "CONS_INGEST.out" destination =  "CONS_BIOM.CONS_INGEST" />
	<link origin = "CONS_EGEST.out" destination =  "CONS_BIOM.CONS_EGEST" />
	<link origin = "CONS_MORT_BIOM.out" destination =  "CONS_BIOM.CONS_MORT_BIOM" />
	<link origin = "CONS_RESPIRATION.out" destination =  "CONS_BIOM.CONS_RESPIRATION" />
	<link origin = "P1_CONS_IC.out" destination =  "CONS_BIOM.P1_CONS_IC" />
	<link origin="this.CELL_SIZE" destination="CONS_BIOM.CELL_SIZE" />

	<atom name="CONS_INGEST" id="CONS_INGEST" status="private"  type="aux"  >

		<port type="input" name="CONS_TEMP_CF" />
		<port type="input" name="CONS_BIOM" />
		<port type="input" name="P1_CONS_RC_INGEST" />
		<port type="input" name="P1_CONS_MAX" />
		<port type="input" name="CELL_SIZE" />
		<port type="input" name="OM_AVAIL" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   INGESTION OF ORGANIC CARBON BY CONSUMER GROUP.  UNITS = KGC/D ]]>
			</doc>

			<code> <![CDATA[ SL::Min(( ( ( CONS_TEMP_CF*CONS_BIOM )*P1_CONS_RC_INGEST )*( 1-( CONS_BIOM/( P1_CONS_MAX*CELL_SIZE ) ) ) ), ( OM_AVAIL/DT )) ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "CONS_TEMP_CF.out" destination =  "CONS_INGEST.CONS_TEMP_CF" />
	<link origin = "CONS_BIOM.out" destination =  "CONS_INGEST.CONS_BIOM" />
	<link origin = "P1_CONS_RC_INGEST.out" destination =  "CONS_INGEST.P1_CONS_RC_INGEST" />
	<link origin = "P1_CONS_MAX.out" destination =  "CONS_INGEST.P1_CONS_MAX" />
	<link origin="this.CELL_SIZE" destination="CONS_INGEST.CELL_SIZE" />
	<link origin = "OM_AVAIL.out" destination =  "CONS_INGEST.OM_AVAIL" />

	<atom name="CONS_EGEST" id="CONS_EGEST" status="public"  type="aux"  >

		<port type="input" name="CONS_INGEST" />
		<port type="input" name="P1_CONS_ASSIM" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   ORGANIC CARBON EGESTED BY CONSUMERS; UNITS = KGC/D  ]]>
			</doc>

			<code> <![CDATA[ ( CONS_INGEST*( 1-P1_CONS_ASSIM ) ) ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "CONS_INGEST.out" destination =  "CONS_EGEST.CONS_INGEST" />
	<link origin = "P1_CONS_ASSIM.out" destination =  "CONS_EGEST.P1_CONS_ASSIM" />

	<atom name="CONS_MORT_BIOM" id="CONS_MORT_BIOM" status="public"  type="aux"  >

		<port type="input" name="P1_CONS_RC_MORT" />
		<port type="input" name="CONS_BIOM" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   CARBON LOSS DUE TO MORTALITY OF CONSUMERS; UNITS =KGC/D ]]>
			</doc>

			<code> <![CDATA[ ( P1_CONS_RC_MORT*CONS_BIOM ) ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "P1_CONS_RC_MORT.out" destination =  "CONS_MORT_BIOM.P1_CONS_RC_MORT" />
	<link origin = "CONS_BIOM.out" destination =  "CONS_MORT_BIOM.CONS_BIOM" />

	<atom name="CONS_RESPIRATION" id="CONS_RESPIRATION" status="private"  type="aux"  >

		<port type="input" name="CONS_BIOM" />
		<port type="input" name="P1_CONS_RC_RESP" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   CARBON LOSSES VIA RESPIRATION.  UNITS = KGC * DIMLESS * 1/D ]]>
			</doc>

			<code> <![CDATA[ ( CONS_BIOM*P1_CONS_RC_RESP ) ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "CONS_BIOM.out" destination =  "CONS_RESPIRATION.CONS_BIOM" />
	<link origin = "P1_CONS_RC_RESP.out" destination =  "CONS_RESPIRATION.P1_CONS_RC_RESP" />

	<atom name="CI_DETR" id="CI_DETR" status="public"  type="aux"  >

		<port type="input" name="OM_AVAIL" />
		<port type="input" name="DET_AVAIL" />
		<port type="input" name="CONS_INGEST" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   CONSUMER IS OPPORTUNISTIC FEEDING ON THIS ITEM IN PROPORTION TO ITS ABUNDANCE COMPARED TO OTHER FOOD ITEMS.  UNITS = KGC/D ]]>
			</doc>

			<code> <![CDATA[  ( ( ( OM_AVAIL == 0 ) ) ? ( 0 ) : ( ( ( DET_AVAIL/OM_AVAIL )*CONS_INGEST ) ) )  ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "OM_AVAIL.out" destination =  "CI_DETR.OM_AVAIL" />
	<link origin="this.DET_AVAIL" destination="CI_DETR.DET_AVAIL" />
	<link origin = "CONS_INGEST.out" destination =  "CI_DETR.CONS_INGEST" />

	<atom name="CI_DOM" id="CI_DOM" status="public"  type="aux"  >

		<port type="input" name="OM_AVAIL" />
		<port type="input" name="DOM_C_AVAIL" />
		<port type="input" name="CONS_INGEST" />

		<dynamic  event="update"  type="code"  >

			<code> <![CDATA[  ( ( ( OM_AVAIL == 0 ) ) ? ( 0 ) : ( ( ( DOM_C_AVAIL/OM_AVAIL )*CONS_INGEST ) ) )  ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "OM_AVAIL.out" destination =  "CI_DOM.OM_AVAIL" />
	<link origin="this.DOM_C_AVAIL" destination="CI_DOM.DOM_C_AVAIL" />
	<link origin = "CONS_INGEST.out" destination =  "CI_DOM.CONS_INGEST" />

	<atom name="CI_NPHBIO" id="CI_NPHBIO" status="public"  type="aux"  >

		<port type="input" name="OM_AVAIL" />
		<port type="input" name="NPHBIO_AVAIL" />
		<port type="input" name="CONS_INGEST" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   CONSUMER IS OPPORTUNISTIC, FEEDING ON THIS ITEM IN PROPORTION TO ITS ABUNDANCE COMPARED TO OTHER FOOD ITEMS.  UNITS = KGC/D ]]>
			</doc>

			<code> <![CDATA[  ( ( ( OM_AVAIL == 0 ) ) ? ( 0 ) : ( ( ( NPHBIO_AVAIL/OM_AVAIL )*CONS_INGEST ) ) )  ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "OM_AVAIL.out" destination =  "CI_NPHBIO.OM_AVAIL" />
	<link origin="this.NPHBIO_AVAIL" destination="CI_NPHBIO.NPHBIO_AVAIL" />
	<link origin = "CONS_INGEST.out" destination =  "CI_NPHBIO.CONS_INGEST" />

	<atom name="CI_PHBIO" id="CI_PHBIO" status="public"  type="aux"  >

		<port type="input" name="OM_AVAIL" />
		<port type="input" name="PHBIO_AVAIL" />
		<port type="input" name="CONS_INGEST" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   CONSUMER IS OPPORTUNISTIC, FEEDING ON THIS ITEM IN PROPORTION TO ITS ABUNDANCE COMPARED TO OTHER FOOD ITEMS.  UNITS = KGC * 1/D = KGC/D ]]>
			</doc>

			<code> <![CDATA[  ( ( ( OM_AVAIL == 0 ) ) ? ( 0 ) : ( ( ( PHBIO_AVAIL/OM_AVAIL )*CONS_INGEST ) ) )  ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "OM_AVAIL.out" destination =  "CI_PHBIO.OM_AVAIL" />
	<link origin="this.PHBIO_AVAIL" destination="CI_PHBIO.PHBIO_AVAIL" />
	<link origin = "CONS_INGEST.out" destination =  "CI_PHBIO.CONS_INGEST" />

	<atom name="CI_PHT" id="CI_PHT" status="public"  type="aux"  >

		<port type="input" name="OM_AVAIL" />
		<port type="input" name="PHT_AVAIL" />
		<port type="input" name="CONS_INGEST" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   CONSUMER IS OPPORTUNISTIC, FEEDING ON THIS ITEM IN PROPORTION TO ITS ABUNDANCE COMPARED TO OTHER FOOD ITEMS.  UNITS = KGC * 1/D = KGC/D ]]>
			</doc>

			<code> <![CDATA[  ( ( ( OM_AVAIL == 0 ) ) ? ( 0 ) : ( ( ( PHT_AVAIL/OM_AVAIL )*CONS_INGEST ) ) )  ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "OM_AVAIL.out" destination =  "CI_PHT.OM_AVAIL" />
	<link origin="this.PHT_AVAIL" destination="CI_PHT.PHT_AVAIL" />
	<link origin = "CONS_INGEST.out" destination =  "CI_PHT.CONS_INGEST" />

	<atom name="CONSUMERS" id="CONSUMERS" status="private"  type="aux"  >

		<port type="input" name="CONS_BIOM" />
		<port type="input" name="CELL_SIZE" />

		<dynamic  event="update"  type="code"  >

			<code> <![CDATA[ ( CONS_BIOM/CELL_SIZE ) ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "CONS_BIOM.out" destination =  "CONSUMERS.CONS_BIOM" />
	<link origin="this.CELL_SIZE" destination="CONSUMERS.CELL_SIZE" />

	<atom name="CONS_MASSDENS" id="CONS_MASSDENS" status="private"  type="aux"  >

		<port type="input" name="CONSUMERS" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   MASS DENSITY OF CONSUMERS. UNITS = G/M^2  ]]>
			</doc>

			<code> <![CDATA[ ( CONSUMERS*1000 ) ]]>
			</code>

		</dynamic>

	</atom>

	<link origin = "CONSUMERS.out" destination =  "CONS_MASSDENS.CONSUMERS" />

	<atom name="CONS_TEMP_CF" id="CONS_TEMP_CF" status="private"  type="aux"  >

		<port type="input" name="AIR_TEMP_DEGC" />
		<port type="input" name="P1_CONS_T_OPT" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   TEMPERATURE FEEDBACK,  FROM LASSITER (1975).  FOR EQUATION, FIRST (UNAMED, 0-1) CONSTANT IS CURVATURE PARAMETER; THE SECOND (UNAMED) CONSTANT IS THE MAXIMUM TEMPERATURE.DIMLESS, RANGES 0-1. ]]>
			</doc>

			<code> <![CDATA[ ( SL::Exp(( 0.20*( AIR_TEMP_DEGC-P1_CONS_T_OPT ) ))*( ( ( 40-AIR_TEMP_DEGC )/( 40-P1_CONS_T_OPT ) )^( 0.20*( 40-P1_CONS_T_OPT ) ) ) ) ]]>
			</code>

		</dynamic>

	</atom>

	<link origin="this.AIR_TEMP_DEGC" destination="CONS_TEMP_CF.AIR_TEMP_DEGC" />
	<link origin = "P1_CONS_T_OPT.out" destination =  "CONS_TEMP_CF.P1_CONS_T_OPT" />

	<atom name="OM_AVAIL" id="OM_AVAIL" status="private"  type="aux"  >

		<port type="input" name="DOM_C_AVAIL" />
		<port type="input" name="DET_AVAIL" />
		<port type="input" name="PHT_AVAIL" />
		<port type="input" name="PHBIO_AVAIL" />
		<port type="input" name="NPHBIO_AVAIL" />

		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   TOTAL BIOMASS OF ALL ORGANIC CARBON FOOD SOURCES.  UNITS = KG C.   ]]>
			</doc>

			<code> <![CDATA[ ( ( ( ( DOM_C_AVAIL+DET_AVAIL )+PHT_AVAIL )+PHBIO_AVAIL )+NPHBIO_AVAIL ) ]]>
			</code>

		</dynamic>

	</atom>

	<link origin="this.DOM_C_AVAIL" destination="OM_AVAIL.DOM_C_AVAIL" />
	<link origin="this.DET_AVAIL" destination="OM_AVAIL.DET_AVAIL" />
	<link origin="this.PHT_AVAIL" destination="OM_AVAIL.PHT_AVAIL" />
	<link origin="this.PHBIO_AVAIL" destination="OM_AVAIL.PHBIO_AVAIL" />
	<link origin="this.NPHBIO_AVAIL" destination="OM_AVAIL.NPHBIO_AVAIL" />

	<atom name="P1_CONS_ASSIM" id="P1_CONS_ASSIM" status="private"  type="aux"  >


		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   CARBON ASSIMILATION EFFICIENCY, DIMENSIONLESS PROPORTION. ]]>
			</doc>

			<code> <![CDATA[ 0.15 ]]>
			</code>

		</dynamic>

	</atom>


	<atom name="P1_CONS_IC" id="P1_CONS_IC" status="private"  type="aux"  >


		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   1 IS WINNER IN THE CALIBRATION TEST 6/11/97 ]]>
			</doc>

			<code> <![CDATA[ 0.0001 ]]>
			</code>

		</dynamic>

	</atom>


	<atom name="P1_CONS_MAX" id="P1_CONS_MAX" status="private"  type="aux"  >


		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   0.11 WINNER CALIBRATION 6/11/97 ]]>
			</doc>

			<code> <![CDATA[ 0.01 ]]>
			</code>

		</dynamic>

	</atom>


	<atom name="P1_CONS_RC_INGEST" id="P1_CONS_RC_INGEST" status="private"  type="aux"  >


		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   MAXIMUM SPECIFIC RATE OF INGESTION.  UNITS = 1/D. ]]>
			</doc>

			<code> <![CDATA[ 0.2 ]]>
			</code>

		</dynamic>

	</atom>


	<atom name="P1_CONS_RC_MORT" id="P1_CONS_RC_MORT" status="private"  type="aux"  >


		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   SPECIFIC MORTALITY RATE.  UNITS = GC/GC PER DAY = 1/D. ]]>
			</doc>

			<code> <![CDATA[ 0.01 ]]>
			</code>

		</dynamic>

	</atom>


	<atom name="P1_CONS_RC_RESP" id="P1_CONS_RC_RESP" status="private"  type="aux"  >


		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   MAXIMUM SPECIFIC RATE OF RESPIRATION.  UNITS = GC/GC PER DAY = 1/D.STEVENSON 1986 ARGUES THAT RESPIRATION RATES OF SOIL ORGANISMS EQUAL  CARBON UPTAKE RATES BY PHOTOSYNTHESIS.  RESPIRATION OF SOIL ORGANISMS  IS PROP. MANY TIMES THAT OF THE OTHER ORGANISMS.  KEEP THIS IN MIND WHEN ESTIMATING THIS VALUE.  (RB) ]]>
			</doc>

			<code> <![CDATA[ 0.02 ]]>
			</code>

		</dynamic>

	</atom>


	<atom name="P1_CONS_T_OPT" id="P1_CONS_T_OPT" status="private"  type="aux"  >


		<dynamic  event="update"  type="code"  >

			<doc> <![CDATA[   TEMPERATURE WHERE RESPIRATION AND ACTIVITY ARE MAXIMUM (DEGREES C).  120 WINNER CALIBRATION 6/11/97 (UNREALISTIC) ]]>
			</doc>

			<code> <![CDATA[ 25 ]]>
			</code>

		</dynamic>

	</atom>


	<port type="input" name="CELL_SIZE" >

		<default> 0.0 

		</default>

	</port>


	<port type="input" name="DET_AVAIL" >

		<default> 0.0 

		</default>

	</port>


	<port type="input" name="DOM_C_AVAIL" >

		<default> 0.0 

		</default>

	</port>


	<port type="input" name="NPHBIO_AVAIL" >

		<default> 0.0 

		</default>

	</port>


	<port type="input" name="PHBIO_AVAIL" >

		<default> 0.0 

		</default>

	</port>


	<port type="input" name="PHT_AVAIL" >

		<default> 0.0 

		</default>

	</port>


	<port type="input" name="AIR_TEMP_DEGC" >

		<default> 0.0 

		</default>

	</port>

</compound>




Maintained by: Tom Maxwell
Last modified: Thu Feb 4 15:49:40 EST 1999