Location: Shi, Hose, 2009 @ 9886c6abed5a / TestCDv3.cellml

Author:
Yubing Shi <y.shi@shef.ac.uk>
Date:
2010-10-20 16:07:08+13:00
Desc:
Test model to test heart valve model. Still requires some other changes to files that it depends on via imports.
Permanent Source URI:
http://models.cellml.org/workspace/shi_hose_2009/rawfile/9886c6abed5ad7a503aed5bb8ee3f3f39733e9f1/TestCDv3.cellml

<?xml version="1.0"?>
<model xmlns="http://www.cellml.org/cellml/1.1#" xmlns:cmeta="http://www.cellml.org/metadata/1.0#" cmeta:id="TempCDv" name="TempCDv">

	<import xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Units.cellml">
		<units name="UnitP" units_ref="UnitP"/>
		<units name="UnitQ" units_ref="UnitQ"/>
		<units name="UnitCV" units_ref="UnitCV"/>
		<units name="UnitE" units_ref="UnitE"/>
		<units name="UnitV" units_ref="UnitV"/>
		<units name="UnitKp" units_ref="UnitKp"/>
		<units name="UnitKf" units_ref="UnitKf"/>
		<units name="UnitKb" units_ref="UnitKb"/>
		<units name="UnitKv" units_ref="UnitKv"/>
		<units name="UnitW" units_ref="UnitW"/>
	</import>

	<import xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="ParaHeart.cellml">
		<component component_ref="ParaHeart" name="ParaLV"/>
	</import>

	<import xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="EVentricle.cellml">
		<component component_ref="EVentricle" name="Elv"/>
	</import>

	<component name="TLV">
		<variable name="Pi" public_interface="out" units="UnitP"/>
		<variable name="Po" public_interface="in" units="UnitP"/>
		<variable name="Qi" public_interface="in" units="UnitQ"/>
		<variable name="Qo" public_interface="out" units="UnitQ"/>
		<variable name="CV" public_interface="in" units="UnitCV"/>
		<variable name="E" public_interface="in" units="UnitE"/>
		<variable name="t" public_interface="in" units="second"/>
		<variable initial_value="500" name="V" units="UnitV"/>
		<variable name="Pini" public_interface="in" units="UnitP"/>
		<variable name="Vini" public_interface="in" units="UnitV"/>
		<variable name="Tao" public_interface="out" units="dimensionless"/>
		<variable initial_value="0" name="W" public_interface="out" units="UnitW"/>
		<variable initial_value="0" name="Ag" public_interface="out" units="radian"/>
		<variable initial_value="0" name="Agt" units="radian"/>
		<variable name="AgMax" public_interface="in" units="radian"/>
		<variable name="Kp" public_interface="in" units="UnitKp"/>
		<variable name="Kf" public_interface="in" units="UnitKf"/>
		<variable name="Kb" public_interface="in" units="UnitKb"/>
		<variable name="Kv" public_interface="in" units="UnitKv"/>

		<math xmlns="http://www.w3.org/1998/Math/MathML">

			<apply id="Ventricle: Pi">
				<eq/>
				<ci>Pi</ci>
				<apply>
					<plus/>
					<ci>Pini</ci>
					<apply>
						<times/>
						<ci>E</ci>
						<apply>
							<minus/>
							<ci>V</ci>
							<ci>Vini</ci>
						</apply>
					</apply>
				</apply>
			</apply>

			<apply id="Ventricle: V">
				<eq/>
				<apply>
					<diff/>
					<bvar>
						<ci>t</ci>
					</bvar>
					<ci>V</ci>
				</apply>
				<apply>
					<minus/>
					<ci>Qi</ci>
					<ci>Qo</ci>
				</apply>
			</apply>

			<apply id="Ventricle: Qo">
				<eq/>
				<ci>Qo</ci>
				<apply>
					<times/>
					<ci>CV</ci>
					<ci>Tao</ci>
					<apply>
						<minus/>
						<ci>Pi</ci>
						<ci>Po</ci>
					</apply>
					<apply>
						<power/>
						<apply>
							<abs/>
							<apply>
								<minus/>
								<ci>Pi</ci>
								<ci>Po</ci>
							</apply>
						</apply>
						<cn>-0.5</cn>
					</apply>
				</apply>
			</apply>

			<apply id="ValveV: Tao">
				<eq/>
				<ci>Tao</ci>
				<apply>
					<divide/>
					<apply>
						<power/>
						<apply>
							<minus/>
							<cn>1</cn>
							<apply>
								<cos/>
								<ci>Ag</ci>
							</apply>
						</apply>
						<cn>2</cn>
					</apply>
					<apply>
						<power/>
						<apply>
							<minus/>
							<cn>1</cn>
							<apply>
								<cos/>
								<ci>AgMax</ci>
							</apply>
						</apply>
						<cn>2</cn>
					</apply>
				</apply>
			</apply>

			<apply id="ValveV: Agt">
				<eq/>
				<apply>
					<diff/>
					<bvar>
						<ci>t</ci>
					</bvar>
					<ci>Agt</ci>
				</apply>
				<ci>W</ci>
			</apply>

			<apply id="Valve: Wt">
				<eq/>
				<apply>
					<diff/>
					<bvar>
						<ci>t</ci>
					</bvar>
					<ci>Wt</ci>
				</apply>
				<piecewise>
					<piece>
						<apply>
							<minus/>
							<apply>
								<plus/>
								<apply>
									<minus/>
									<apply>
										<times/>
										<ci>Kp</ci>
										<apply>
											<minus/>
											<ci>Pi</ci>
											<ci>Po</ci>
										</apply>
										<apply>
											<cos/>
											<ci>Ag</ci>
										</apply>
									</apply>
									<apply>
										<times/>
										<ci>Kf</ci>
										<ci>W</ci>
									</apply>
								</apply>
								<apply>
									<times/>
									<ci>Kb</ci>
									<ci>Qo</ci>
									<apply>
										<cos/>
										<ci>Ag</ci>
									</apply>
								</apply>
							</apply>
							<apply>
								<times/>
								<ci>Kv</ci>
								<ci>Qo</ci>
								<apply>
									<sin/>
									<apply>
										<times/>
										<cn>2</cn>
										<ci>Ag</ci>
									</apply>
								</apply>
							</apply>
						</apply>
						<apply>
							<geq/>
							<ci>Qo</ci>
							<cn>0</cn>
						</apply>
					</piece>
					<piece>
						<apply>
							<plus/>
							<apply>
								<minus/>
								<apply>
									<times/>
									<ci>Kp</ci>
									<apply>
										<minus/>
										<ci>Pi</ci>
										<ci>Po</ci>
									</apply>
									<apply>
										<cos/>
										<ci>Ag</ci>
									</apply>
								</apply>
								<apply>
									<times/>
									<ci>Kf</ci>
									<ci>W</ci>
								</apply>
							</apply>
							<apply>
								<times/>
								<ci>Kb</ci>
								<ci>Qo</ci>
								<apply>
									<cos/>
									<ci>Ag</ci>
								</apply>
							</apply>
						</apply>
						<apply>
							<lt/>
							<ci>Qo</ci>
							<cn>0</cn>
						</apply>
					</piece>
				</piecewise>
			</apply>

			<apply id="ValveV: Ag">
				<eq/>
				<ci>Ag</ci>
				<piecewise>
					<piece>
						<cn>0</cn>
						<apply>
							<leq/>
							<ci>Agt</ci>
							<cn>0</cn>
						</apply>
					</piece>
					<piece>
						<ci>Agt</ci>
						<apply>
							<and/>
							<apply>
								<gt/>
								<ci>Agt</ci>
								<cn>0</cn>
							</apply>
							<apply>
								<lt/>
								<ci>Agt</ci>
								<ci>AgMax</ci>
							</apply>
						</apply>
					</piece>
					<piece>
						<ci>AgMax</ci>
						<apply>
							<geq/>
							<ci>Agt</ci>
							<ci>AgMax</ci>
						</apply>
					</piece>
				</piecewise>
			</apply>

			<apply id="ValveV: W">
				<eq/>
				<ci>W</ci>
				<piecewise>
					<piece>
						<cn>0</cn>
						<apply>
							<leq/>
							<ci>Agt</ci>
							<cn>0</cn>
						</apply>
					</piece>
					<piece>
						<ci>Wt</ci>
						<apply>
							<and/>
							<apply>
								<gt/>
								<ci>Agt</ci>
								<cn>0</cn>
							</apply>
							<apply>
								<lt/>
								<ci>Agt</ci>
								<ci>AgMax</ci>
							</apply>
						</apply>
					</piece>
					<piece>
						<cn>0</cn>
						<apply>
							<geq/>
							<ci>Agt</ci>
							<ci>AgMax</ci>
						</apply>
					</piece>
				</piecewise>
			</apply>
		</math>
		<variable name="Wt" units="UnitW"/>
	</component>

	<component name="environment">
		<variable name="t" public_interface="out" units="second"/>
	</component>

	<component name="LSource">
		<variable name="Qs" public_interface="out" units="UnitQ"/>
		<math xmlns="http://www.w3.org/1998/Math/MathML">
			<apply>
				<eq/>
				<ci>Qs</ci>
				<apply>
					<plus/>
					<cn>150</cn>
					<apply>
						<times/>
						<cn>10</cn>
						<apply>
							<sin/>
							<apply>
								<times/>
								<cn>2</cn>
								<cn>3.14</cn>
								<ci>t</ci>
							</apply>
						</apply>
					</apply>
				</apply>
			</apply>
		</math>
		<variable name="t" public_interface="in" units="second"/>
	</component>

	<component name="LSink">
		<variable initial_value="1" name="Pe" public_interface="out" units="UnitP"/>
	</component>

	<connection>
		<map_components component_1="environment" component_2="TLV"/>
		<map_variables variable_1="t" variable_2="t"/>
	</connection>

	<connection>
		<map_components component_1="environment" component_2="LSource"/>
		<map_variables variable_1="t" variable_2="t"/>
	</connection>

	<connection>
		<map_components component_1="environment" component_2="Elv"/>
		<map_variables variable_1="t" variable_2="t"/>
	</connection>

	<connection>
		<map_components component_1="LSource" component_2="TLV"/>
		<map_variables variable_1="Qs" variable_2="Qi"/>
	</connection>

	<connection>
		<map_components component_1="TLV" component_2="LSink"/>
		<map_variables variable_1="Po" variable_2="Pe"/>
	</connection>

	<connection>
		<map_components component_1="ParaLV" component_2="TLV"/>
		<map_variables variable_1="PlvIni" variable_2="Pini"/>
		<map_variables variable_1="VlvIni" variable_2="Vini"/>
		<map_variables variable_1="CVao" variable_2="CV"/>
		<map_variables variable_1="Kp_ao" variable_2="Kp"/>
		<map_variables variable_1="Kf_ao" variable_2="Kf"/>
		<map_variables variable_1="Kb_ao" variable_2="Kb"/>
		<map_variables variable_1="Kv_ao" variable_2="Kv"/>
		<map_variables variable_1="AgMax" variable_2="AgMax"/>
	</connection>

	<connection>
		<map_components component_1="TLV" component_2="Elv"/>
		<map_variables variable_1="E" variable_2="E"/>
	</connection>

	<connection>
		<map_components component_1="ParaLV" component_2="Elv"/>
		<map_variables variable_1="ElvMax" variable_2="Emax"/>
		<map_variables variable_1="ElvMin" variable_2="Emin"/>
		<map_variables variable_1="T" variable_2="T"/>
		<map_variables variable_1="Ts1" variable_2="Ts1"/>
		<map_variables variable_1="Ts2" variable_2="Ts2"/>
	</connection>

</model>