2 Copyright (C) 2012 Modelon AB
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the BSD style license.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 FMILIB_License.txt file for more details.
12 You should have received a copy of the FMILIB_License.txt file
13 along with this program. If not, contact Modelon AB <http://www.modelon.com>.
16 #include "fmi2_import_impl.h"
18 fmi2_import_unit_t* fmi2_import_get_unit(fmi2_import_unit_definitions_t* ud, unsigned int index) {
19 return fmi2_xml_get_unit(ud, index);
22 const char* fmi2_import_get_unit_name(fmi2_import_unit_t* u) {
23 return fmi2_xml_get_unit_name(u);
26 const int* fmi2_import_get_SI_unit_exponents(fmi2_import_unit_t* u){
27 return fmi2_xml_get_SI_unit_exponents(u);
31 \brief Get factor to the corresponding SI base units.
33 double fmi2_import_get_SI_unit_factor(fmi2_import_unit_t* u) {
34 return fmi2_xml_get_SI_unit_factor(u);
38 \brief Get offset to the corresponding SI base units.
40 double fmi2_import_get_SI_unit_offset(fmi2_import_unit_t* u) {
41 return fmi2_xml_get_SI_unit_offset(u);
45 \brief Convert a value with respect to the unit to the
46 value with respect to the SI base unit.
48 double fmi2_import_convert_to_SI_base_unit(double v, fmi2_import_unit_t* u) {
49 return fmi2_xml_convert_to_SI_base_unit(v,u);
53 \brief Convert a value with respect to the SI base unit to the
54 value with respect to the unit.
56 double fmi2_import_convert_from_SI_base_unit(double v , fmi2_import_unit_t* u) {
57 return fmi2_xml_convert_from_SI_base_unit( v, u);
60 unsigned int fmi2_import_get_unit_display_unit_number(fmi2_import_unit_t* u) {
61 return fmi2_xml_get_unit_display_unit_number(u);
64 fmi2_import_display_unit_t* fmi2_import_get_unit_display_unit(fmi2_import_unit_t* u, size_t index) {
65 return fmi2_xml_get_unit_display_unit(u, index);
68 fmi2_import_unit_t* fmi2_import_get_base_unit(fmi2_import_display_unit_t* du) {
69 return fmi2_xml_get_base_unit(du);
72 const char* fmi2_import_get_display_unit_name(fmi2_import_display_unit_t* du) {
73 return fmi2_xml_get_display_unit_name(du);
76 fmi2_real_t fmi2_import_get_display_unit_factor(fmi2_import_display_unit_t* du) {
77 return fmi2_xml_get_display_unit_factor(du);
80 fmi2_real_t fmi2_import_get_display_unit_offset(fmi2_import_display_unit_t* du) {
81 return fmi2_xml_get_display_unit_offset(du);
84 fmi2_real_t fmi2_import_convert_to_display_unit(fmi2_real_t val , fmi2_import_display_unit_t* du, int isRelativeQuantity) {
85 double factor = fmi2_import_get_display_unit_factor(du);
86 double offset = fmi2_import_get_display_unit_offset(du);
87 if(isRelativeQuantity)
90 return (val*factor + offset);
93 fmi2_real_t fmi2_import_convert_from_display_unit(fmi2_real_t val, fmi2_import_display_unit_t* du, int isRelativeQuantity) {
94 double factor = fmi2_import_get_display_unit_factor(du);
95 double offset = fmi2_import_get_display_unit_offset(du);
96 if(isRelativeQuantity)
99 return (val - offset)/factor;