Location: Shi, Hose, 2009 @ 0811a1d82356 / TestCDv3.cellml

Author:
Randall Britten <r.britten@auckland.ac.nz>
Date:
2010-10-20 16:42:50+13:00
Desc:
Placing rule for "W" inside toplevel piecewise. Removing piecewise for angle (Agt). Removing "Wt" and "Agt" temporary variables. Sadly, current tip revision of CellML api crashes when trying to generate code. Also, a lot of whitespace changes, but Notepad++ and other reasonable diff tools can ignore these.
Permanent Source URI:
http://models.cellml.org/workspace/shi_hose_2009/rawfile/0811a1d82356f59694cad371a519d782310167aa/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 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: Ag">
                <eq/>
                <apply>
                    <diff/>
                    <bvar>
                        <ci>t</ci>
                    </bvar>
                    <ci>Ag</ci>
                </apply>
                <ci>W</ci>
            </apply>

            <piecewise id="Valve: W piecewise">
                <piece>
                    <apply id="Valve: W derivative">
                        <eq/>
                        <apply>
                            <diff/>
                            <bvar>
                                <ci>t</ci>
                            </bvar>
                            <ci>W</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>
                        <and/>
                        <apply>
                            <gt/>
                            <ci>Ag</ci>
                            <cn>0</cn>
                        </apply>
                        <apply>
                            <lt/>
                            <ci>Ag</ci>
                            <ci>AgMax</ci>
                        </apply>
                    </apply>
                </piece>


                <otherwise>
                    <apply id="Valve: W">
                        <eq/>
                        <ci>W</ci>
                        <cn>0</cn>
                    </apply>
                </otherwise>

            </piecewise>

        </math>

    </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>