Main /
FMICertificationThere is no FMI Certification, but there is FMI Compatibility Checking. https://www.fmi-standard.org/tools is a list of FMI tools that shows compatibility. The process to add a tool to the table includes adding files to a svn repo where an svn commit-hook runs some validation tests when the files are committed. Documentation
FilesThere are two types of checking:
Files to be checked in for tools that export FMUsIn Section 5, Rule #9, the FMI Cross Check Rules describe what files are to be check in for tools that export FMUs: "To submit per exported FMU stored on the SVN server:" "To submit per exported FMU stored on the SVN server:"
tool vendor.
"Observe the naming conventions given here, including case. We recommend keeping {FMUName} short to avoid path length restriction problems on platforms like Windows." Rules for tools that import FMUsIn Section 5, Rule #10, the FMI Cross Check Rules describe what files are to be check in for tools that import FMUs: "The FMU importing tools must report on importing for all Reference FMUs available for the supported FMI Variant and supported platforms provided on the SVN server (Note: not required to “pass” because of potentially missing capabilities of the FMU) and must successfully import at least 3 FMUs for at least one supported platform of at least 3 exporting tools, and run for as long as the {FMUName]_ref.opt states and supply a .csv file of the solution they computed to receive an "Available" status. Rule #11 states: "To submit per imported FMU:"
"Vendors of tools that import FMUs for the "c-code" platform and would like to be listed in the Cross-Check Table have to organize one-to-one tests with exporting tool vendors in case they are not providing “c-code” FMUs publicly to produce testimonials for successful Cross-Check results." Possible Plan for PtolemyThere are various FMUs at https://svn.fmi-standard.org/fmi/branches/public/Test_FMUs/FMI_2.0
Focusing on FMI-2.0 for CoSimulation:
In the near term, we could just use the FMUSDK FMUs that are in the ptII tree, and then submit them later. https://svn.fmi-standard.org/fmi/branches/public/CrossCheck_Results/FMI_2.0/CoSimulation/ contains the results, we could mimic what is in https://svn.fmi-standard.org/fmi/branches/public/CrossCheck_Results/FMI_2.0/CoSimulation/win64/Dymola/2016FD01/FMUSDK/2.0.4/BouncingBall/ Note that FMUSDK 2.0.4 has been released. It would be good to update fmusdk 2, which supports Linux and Mac. Note that the Ptolemy Continuous domain will probably not work with regular FMI-2.0 FMUs because FMI-2.0 FMUs do not support a zero step size. We have an extension for this that will fix that problem, but this indicates that the models would need to be SDF. We have models that test the FMUSDK fmus. These models would need to be adapted to write csv. For example, fmus in $PTII/ptolemy/actor/lib/fmi/fmus that end in
FMUS that end in
Running
(There are similar tests for the FMI-2.0 ME fmus with names like So, for each of these tests, we need to connect a CSVWriter and then compare the results with the known good results at https://svn.fmi-standard.org/fmi/branches/public/Test_FMUs/FMI_2.0/CoSimulation/ However before we get started, we should reorganize actor/lib/fmus so that it is hierarchical:
Don't use dots in directories, so avoid Comparing CSV filesIt is useful to be able to compare the csv output of the FMUCheck with the output of Ptolemy. csvcomparator
bash-3.2$ java -jar ~/src/CSVCompare/CSVComparator.jar -olderFile=CoupledClutches_cc_orig.csv -youngerFile=CoupledClutches_cc.csv -resultFile=foo.csv [INFO] Start Comparing... [INFO] Write Result... Exception in thread "main" java.lang.NullPointerException at java.io.File.<init>(File.java:277) at com.csvcomparator.methods.CSVMethods.writeCSVData(CSVMethods.java:92) at com.csvcomparator.main.Main.main(Main.java:68) bash-3.2$ java -jar ~/src/CSVCompare/CSVComparator.jar -olderFile=CoupledClutches_cc_orig.csv -youngerFile=CoupledClutches_cc.csv -resultFile=/tmp/foo.csv [INFO] Start Comparing... [INFO] Write Result... [INFO] Done!!! bash-3.2$ csv-compare (from Modelica)
bash-3.2$ cd /tmp bash-3.2$ git clone https://github.com/modelica-tools/csv-compare.git Cloning into 'csv-compare'... remote: Counting objects: 393, done. remote: Compressing objects: 100% (44/44), done. Receiving objects: 97% (382/393), 388.01 KiB | 762.00 KiB/s remote: Total 393 (delta 17), reused 0 (delta 0), pack-reused 349 \ Receiving objects: 100% (393/393), 397.73 KiB | 762.00 KiB/s, done. Resolving deltas: 100% (209/209), done. Checking connectivity... done. bash-3.2$ cd csv-compare bash-3.2$ make make: *** No rule to make target `Modelica_ResultCompare/Properties/AssemblyInfo.cs.template', needed by `Modelica_ResultCompare/Properties/AssemblyInfo.cs'. Stop. bash-3.2$ FMUCheckThe To see what options One option is quite useful: Should Ptolemy be able to support this? See AlsoExternal Resources
|