[kepler-dev] [kepler-cvs] kepler/workflows/test UnitConversion.xml

Shawn Bowers sbowers at ucdavis.edu
Wed May 11 10:07:00 PDT 2005


It's not clear from your log message Dan, but it sounds like you are 
saying that when you run a workflow with connected ports having 
different units, the unit system (sitting in the background) 
automatically does the unit conversions.

I wonder if this is the way we want to do it in Kepler from a UI 
perspective, i.e., I think we probably want to (a) notify users when 
units are incompatible prior to running the workflow (which can be done 
now in Ptolemy but only by running the "constraint solver"), and (b) 
offer to "resolve" the incompatibility via a set of choices (for units, 
the choices are probably pretty limitted).  In general, as Matt and Rich 
have pointed out, there are cases where you can convert the units, but 
semantically the conversion is incorrect.


shawn




Daniel Higgins wrote:
> higgins     05/05/11 09:53:30
> 
>   Added:       workflows/test UnitConversion.xml
>   Log:
>   An example of how unit conversions can be automatically carried out by Kepler/PTII.
>   
>   Revision  Changes    Path
>   1.1                  kepler/workflows/test/UnitConversion.xml
>   
>   Index: UnitConversion.xml
>   ===================================================================
>   <?xml version="1.0" standalone="no"?>
>   <!DOCTYPE entity PUBLIC "-//UC Berkeley//DTD MoML 1//EN"
>       "http://ptolemy.eecs.berkeley.edu/xml/dtd/MoML_1.dtd">
>   <entity name="UnitConversion" class="ptolemy.actor.TypedCompositeActor">
>       <property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="5.0-beta">
>       </property>
>       <property name="SDF Director" class="ptolemy.domains.sdf.kernel.SDFDirector">
>           <property name="iterations" class="ptolemy.data.expr.Parameter" value="1">
>           </property>
>           <property name="entityId" class="org.ecoinformatics.seek.util.NamedObjId" value="urn:lsid:ecoinformatics.org:kepler.300.1">
>           </property>
>           <property name="_location" class="ptolemy.kernel.util.Location" value="[265.0, 115.0]">
>           </property>
>       </property>
>       <property name="BasicUnits" class="ptolemy.data.unit.UnitSystem">
>           <property name="entityId" class="org.ecoinformatics.seek.util.NamedObjId" value="urn:lsid:ecoinformatics.org:kepler.234.1">
>           </property>
>           <property name="meters" class="ptolemy.data.unit.BaseUnit" value="1.0">
>               <property name="Length" class="ptolemy.data.unit.UnitCategory">
>               </property>
>           </property>
>           <property name="meter" class="ptolemy.data.expr.Parameter" value="meters">
>           </property>
>           <property name="m" class="ptolemy.data.expr.Parameter" value="meters">
>           </property>
>           <property name="cm" class="ptolemy.data.expr.Parameter" value="0.01*meters">
>           </property>
>           <property name="centimeters" class="ptolemy.data.expr.Parameter" value="cm">
>           </property>
>           <property name="centimeter" class="ptolemy.data.expr.Parameter" value="cm">
>           </property>
>           <property name="mm" class="ptolemy.data.expr.Parameter" value="0.001*meters">
>           </property>
>           <property name="millimeter" class="ptolemy.data.expr.Parameter" value="mm">
>           </property>
>           <property name="millimeters" class="ptolemy.data.expr.Parameter" value="mm">
>           </property>
>           <property name="in" class="ptolemy.data.expr.Parameter" value="2.54*cm">
>           </property>
>           <property name="inch" class="ptolemy.data.expr.Parameter" value="in">
>           </property>
>           <property name="inches" class="ptolemy.data.expr.Parameter" value="in">
>           </property>
>           <property name="seconds" class="ptolemy.data.unit.BaseUnit" value="1.0">
>               <property name="Time" class="ptolemy.data.unit.UnitCategory">
>               </property>
>           </property>
>           <property name="sec" class="ptolemy.data.expr.Parameter" value="seconds">
>           </property>
>           <property name="second" class="ptolemy.data.expr.Parameter" value="seconds">
>           </property>
>           <property name="ms" class="ptolemy.data.expr.Parameter" value="0.001*seconds">
>           </property>
>           <property name="millisecond" class="ptolemy.data.expr.Parameter" value="ms">
>           </property>
>           <property name="milliseconds" class="ptolemy.data.expr.Parameter" value="ms">
>           </property>
>           <property name="_iconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
>               <configure>
>             <svg>
>               <rect x="-30" y="-15" width="60" height="30" style="fill:grey"></rect>
>             </svg>
>           </configure>
>           </property>
>           <property name="_location" class="ptolemy.kernel.util.Location" value="[275.0, 175.0]">
>           </property>
>       </property>
>       <property name="Annotation" class="ptolemy.vergil.kernel.attributes.TextAttribute">
>           <property name="text" class="ptolemy.kernel.util.StringAttribute" value="This is an example of unit conversion in Kepler, as supplied by PtolemyII.&#10;First, add a Unit System ('Basics Units' in this example). Then you can use&#10;expressions of units as indicated in this example and unit conversion will be&#10;automatically carried out. Note that the results of adding these 4 velocities is&#10;&quot;12.0254 * meters / seconds&quot;&#10;&#10;Dan Higgins - May 11, 2005">
>           </property>
>           <property name="entityId" class="org.ecoinformatics.seek.util.NamedObjId" value="urn:lsid:ecoinformatics.org:kepler.233.1">
>           </property>
>           <property name="_location" class="ptolemy.kernel.util.Location" value="{65, 430}">
>           </property>
>       </property>
>       <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={222, 118, 836, 787}, maximized=false}">
>       </property>
>       <property name="_vergilSize" class="ptolemy.actor.gui.SizeAttribute" value="[600, 660]">
>       </property>
>       <property name="_vergilZoomFactor" class="ptolemy.data.expr.ExpertParameter" value="1.0">
>       </property>
>       <property name="_vergilCenter" class="ptolemy.data.expr.ExpertParameter" value="{300.0, 330.0}">
>       </property>
>       <entity name="Display" class="ptolemy.actor.lib.gui.Display">
>           <property name="_windowProperties" class="ptolemy.actor.gui.WindowPropertiesAttribute" value="{bounds={953, 800, 292, 224}, maximized=false}">
>           </property>
>           <property name="entityId" class="org.ecoinformatics.seek.util.NamedObjId" value="urn:lsid:ecoinformatics.org:kepler.7.1">
>           </property>
>           <property name="_location" class="ptolemy.kernel.util.Location" value="{420, 270}">
>           </property>
>       </entity>
>       <entity name="Constant" class="ptolemy.actor.lib.Const">
>           <property name="value" class="ptolemy.data.expr.Parameter" value="1*m/sec">
>           </property>
>           <property name="entityId" class="org.ecoinformatics.seek.util.NamedObjId" value="urn:lsid:ecoinformatics.org:kepler.1.1">
>           </property>
>           <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
>               <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
>               </property>
>               <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="40">
>               </property>
>           </property>
>           <property name="_location" class="ptolemy.kernel.util.Location" value="{90, 235}">
>           </property>
>       </entity>
>       <entity name="Constant2" class="ptolemy.actor.lib.Const">
>           <property name="value" class="ptolemy.data.expr.Parameter" value="1*cm/ms">
>           </property>
>           <property name="entityId" class="org.ecoinformatics.seek.util.NamedObjId" value="urn:lsid:ecoinformatics.org:kepler.1.1">
>           </property>
>           <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
>               <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
>               </property>
>               <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="40">
>               </property>
>           </property>
>           <property name="_location" class="ptolemy.kernel.util.Location" value="{90, 280}">
>           </property>
>       </entity>
>       <entity name="Constant3" class="ptolemy.actor.lib.Const">
>           <property name="value" class="ptolemy.data.expr.Parameter" value="1000*mm/sec">
>           </property>
>           <property name="entityId" class="org.ecoinformatics.seek.util.NamedObjId" value="urn:lsid:ecoinformatics.org:kepler.1.1">
>           </property>
>           <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
>               <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
>               </property>
>               <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="40">
>               </property>
>           </property>
>           <property name="_location" class="ptolemy.kernel.util.Location" value="{90, 325}">
>           </property>
>       </entity>
>       <entity name="Constant4" class="ptolemy.actor.lib.Const">
>           <property name="value" class="ptolemy.data.expr.Parameter" value="1*inches/sec">
>           </property>
>           <property name="entityId" class="org.ecoinformatics.seek.util.NamedObjId" value="urn:lsid:ecoinformatics.org:kepler.1.1">
>           </property>
>           <property name="_icon" class="ptolemy.vergil.icon.BoxedValueIcon">
>               <property name="attributeName" class="ptolemy.kernel.util.StringAttribute" value="value">
>               </property>
>               <property name="displayWidth" class="ptolemy.data.expr.Parameter" value="40">
>               </property>
>           </property>
>           <property name="_location" class="ptolemy.kernel.util.Location" value="{90, 375}">
>           </property>
>       </entity>
>       <entity name="Add or Subtract" class="ptolemy.actor.lib.AddSubtract">
>           <property name="entityId" class="org.ecoinformatics.seek.util.NamedObjId" value="urn:lsid:ecoinformatics.org:kepler.69.1">
>           </property>
>           <property name="_location" class="ptolemy.kernel.util.Location" value="[245.0, 290.0]">
>           </property>
>       </entity>
>       <relation name="relation" class="ptolemy.actor.TypedIORelation">
>       </relation>
>       <relation name="relation2" class="ptolemy.actor.TypedIORelation">
>       </relation>
>       <relation name="relation3" class="ptolemy.actor.TypedIORelation">
>       </relation>
>       <relation name="relation4" class="ptolemy.actor.TypedIORelation">
>       </relation>
>       <relation name="relation5" class="ptolemy.actor.TypedIORelation">
>       </relation>
>       <link port="Display.input" relation="relation5"/>
>       <link port="Constant.output" relation="relation2"/>
>       <link port="Constant2.output" relation="relation3"/>
>       <link port="Constant3.output" relation="relation4"/>
>       <link port="Constant4.output" relation="relation"/>
>       <link port="Add or Subtract.plus" relation="relation"/>
>       <link port="Add or Subtract.plus" relation="relation2"/>
>       <link port="Add or Subtract.plus" relation="relation3"/>
>       <link port="Add or Subtract.plus" relation="relation4"/>
>       <link port="Add or Subtract.output" relation="relation5"/>
>   </entity>
>   
>   
>   
> _______________________________________________
> Kepler-cvs mailing list
> Kepler-cvs at ecoinformatics.org
> http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-cvs



More information about the Kepler-dev mailing list