﻿/*
Copyright (c) <2015>, <CSTB>
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer 
in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
 */
//------------------------------------------------------------------------------
// <auto-generated>
//     Ce code a été généré par un outil.
//     Version du runtime :4.0.30319.18408
//
//     Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
//     le code est régénéré.
// </auto-generated>
//------------------------------------------------------------------------------

using System.Xml.Serialization;

// 
// This source code was auto-generated by xsd, Version=4.0.30319.1.
// 


/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class fmiModelDescription {
    
    private fmiModelDescriptionModelExchange[] modelExchangeField;
    
    private fmiModelDescriptionCoSimulation[] coSimulationField;
    
    private fmiModelDescriptionUnitDefinitions unitDefinitionsField;
    
    private fmiModelDescriptionTypeDefinitions typeDefinitionsField;
    
    private fmiModelDescriptionLogCategories logCategoriesField;
    
    private fmiModelDescriptionDefaultExperiment defaultExperimentField;
    
    private fmi2Annotation vendorAnnotationsField;
    
    private fmiModelDescriptionModelVariables modelVariablesField;
    
    private fmiModelDescriptionModelStructure modelStructureField;
    
    private string fmiVersionField;
    
    private string modelNameField;
    
    private string guidField;
    
    private string descriptionField;
    
    private string authorField;
    
    private string versionField;
    
    private string copyrightField;
    
    private string licenseField;
    
    private string generationToolField;
    
    private System.DateTime generationDateAndTimeField;
    
    private bool generationDateAndTimeFieldSpecified;
    
    private fmiModelDescriptionVariableNamingConvention variableNamingConventionField;
    
    private uint numberOfEventIndicatorsField;
    
    private bool numberOfEventIndicatorsFieldSpecified;
    
    public fmiModelDescription() {
        this.fmiVersionField = "2.0";
        this.variableNamingConventionField = fmiModelDescriptionVariableNamingConvention.flat;
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("ModelExchange")]
    public fmiModelDescriptionModelExchange[] ModelExchange {
        get {
            return this.modelExchangeField;
        }
        set {
            this.modelExchangeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("CoSimulation")]
    public fmiModelDescriptionCoSimulation[] CoSimulation {
        get {
            return this.coSimulationField;
        }
        set {
            this.coSimulationField = value;
        }
    }
    
    /// <remarks/>
    public fmiModelDescriptionUnitDefinitions UnitDefinitions {
        get {
            return this.unitDefinitionsField;
        }
        set {
            this.unitDefinitionsField = value;
        }
    }
    
    /// <remarks/>
    public fmiModelDescriptionTypeDefinitions TypeDefinitions {
        get {
            return this.typeDefinitionsField;
        }
        set {
            this.typeDefinitionsField = value;
        }
    }
    
    /// <remarks/>
    public fmiModelDescriptionLogCategories LogCategories {
        get {
            return this.logCategoriesField;
        }
        set {
            this.logCategoriesField = value;
        }
    }
    
    /// <remarks/>
    public fmiModelDescriptionDefaultExperiment DefaultExperiment {
        get {
            return this.defaultExperimentField;
        }
        set {
            this.defaultExperimentField = value;
        }
    }
    
    /// <remarks/>
    public fmi2Annotation VendorAnnotations {
        get {
            return this.vendorAnnotationsField;
        }
        set {
            this.vendorAnnotationsField = value;
        }
    }
    
    /// <remarks/>
    public fmiModelDescriptionModelVariables ModelVariables {
        get {
            return this.modelVariablesField;
        }
        set {
            this.modelVariablesField = value;
        }
    }
    
    /// <remarks/>
    public fmiModelDescriptionModelStructure ModelStructure {
        get {
            return this.modelStructureField;
        }
        set {
            this.modelStructureField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string fmiVersion {
        get {
            return this.fmiVersionField;
        }
        set {
            this.fmiVersionField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string modelName {
        get {
            return this.modelNameField;
        }
        set {
            this.modelNameField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string guid {
        get {
            return this.guidField;
        }
        set {
            this.guidField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string description {
        get {
            return this.descriptionField;
        }
        set {
            this.descriptionField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string author {
        get {
            return this.authorField;
        }
        set {
            this.authorField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string version {
        get {
            return this.versionField;
        }
        set {
            this.versionField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string copyright {
        get {
            return this.copyrightField;
        }
        set {
            this.copyrightField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string license {
        get {
            return this.licenseField;
        }
        set {
            this.licenseField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string generationTool {
        get {
            return this.generationToolField;
        }
        set {
            this.generationToolField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public System.DateTime generationDateAndTime {
        get {
            return this.generationDateAndTimeField;
        }
        set {
            this.generationDateAndTimeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool generationDateAndTimeSpecified {
        get {
            return this.generationDateAndTimeFieldSpecified;
        }
        set {
            this.generationDateAndTimeFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(fmiModelDescriptionVariableNamingConvention.flat)]
    public fmiModelDescriptionVariableNamingConvention variableNamingConvention {
        get {
            return this.variableNamingConventionField;
        }
        set {
            this.variableNamingConventionField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public uint numberOfEventIndicators {
        get {
            return this.numberOfEventIndicatorsField;
        }
        set {
            this.numberOfEventIndicatorsField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool numberOfEventIndicatorsSpecified {
        get {
            return this.numberOfEventIndicatorsFieldSpecified;
        }
        set {
            this.numberOfEventIndicatorsFieldSpecified = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionModelExchange {
    
    private fmiModelDescriptionModelExchangeSourceFiles sourceFilesField;
    
    private string modelIdentifierField;
    
    private bool needsExecutionToolField;
    
    private bool completedIntegratorStepNotNeededField;
    
    private bool canBeInstantiatedOnlyOncePerProcessField;
    
    private bool canNotUseMemoryManagementFunctionsField;
    
    private bool canGetAndSetFMUstateField;
    
    private bool canSerializeFMUstateField;
    
    private bool providesDirectionalDerivativeField;
    
    public fmiModelDescriptionModelExchange() {
        this.needsExecutionToolField = false;
        this.completedIntegratorStepNotNeededField = false;
        this.canBeInstantiatedOnlyOncePerProcessField = false;
        this.canNotUseMemoryManagementFunctionsField = false;
        this.canGetAndSetFMUstateField = false;
        this.canSerializeFMUstateField = false;
        this.providesDirectionalDerivativeField = false;
    }
    
    /// <remarks/>
    public fmiModelDescriptionModelExchangeSourceFiles SourceFiles {
        get {
            return this.sourceFilesField;
        }
        set {
            this.sourceFilesField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string modelIdentifier {
        get {
            return this.modelIdentifierField;
        }
        set {
            this.modelIdentifierField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool needsExecutionTool {
        get {
            return this.needsExecutionToolField;
        }
        set {
            this.needsExecutionToolField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool completedIntegratorStepNotNeeded {
        get {
            return this.completedIntegratorStepNotNeededField;
        }
        set {
            this.completedIntegratorStepNotNeededField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canBeInstantiatedOnlyOncePerProcess {
        get {
            return this.canBeInstantiatedOnlyOncePerProcessField;
        }
        set {
            this.canBeInstantiatedOnlyOncePerProcessField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canNotUseMemoryManagementFunctions {
        get {
            return this.canNotUseMemoryManagementFunctionsField;
        }
        set {
            this.canNotUseMemoryManagementFunctionsField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canGetAndSetFMUstate {
        get {
            return this.canGetAndSetFMUstateField;
        }
        set {
            this.canGetAndSetFMUstateField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canSerializeFMUstate {
        get {
            return this.canSerializeFMUstateField;
        }
        set {
            this.canSerializeFMUstateField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool providesDirectionalDerivative {
        get {
            return this.providesDirectionalDerivativeField;
        }
        set {
            this.providesDirectionalDerivativeField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionModelExchangeSourceFiles {
    
    private fmiModelDescriptionModelExchangeSourceFilesFile[] fileField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("File")]
    public fmiModelDescriptionModelExchangeSourceFilesFile[] File {
        get {
            return this.fileField;
        }
        set {
            this.fileField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionModelExchangeSourceFilesFile {
    
    private string nameField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class fmi2VariableDependency {
    
    private fmi2VariableDependencyUnknown[] unknownField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Unknown")]
    public fmi2VariableDependencyUnknown[] Unknown {
        get {
            return this.unknownField;
        }
        set {
            this.unknownField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2VariableDependencyUnknown {
    
    private uint indexField;
    
    private uint[] dependenciesField;
    
    private fmi2VariableDependencyUnknownDependenciesKind dependenciesKindField;
    
    private bool dependenciesKindFieldSpecified;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public uint index {
        get {
            return this.indexField;
        }
        set {
            this.indexField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public uint[] dependencies {
        get {
            return this.dependenciesField;
        }
        set {
            this.dependenciesField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public fmi2VariableDependencyUnknownDependenciesKind dependenciesKind {
        get {
            return this.dependenciesKindField;
        }
        set {
            this.dependenciesKindField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool dependenciesKindSpecified {
        get {
            return this.dependenciesKindFieldSpecified;
        }
        set {
            this.dependenciesKindFieldSpecified = value;
        }
    }
}

/// <remarks/>
[System.FlagsAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public enum fmi2VariableDependencyUnknownDependenciesKind {
    
    /// <remarks/>
    dependent = 1,
    
    /// <remarks/>
    constant = 2,
    
    /// <remarks/>
    @fixed = 4,
    
    /// <remarks/>
    tunable = 8,
    
    /// <remarks/>
    discrete = 16,
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class fmi2ScalarVariable {
    
    private object itemField;
    
    private fmi2Annotation annotationsField;
    
    private string nameField;
    
    private uint valueReferenceField;
    
    private string descriptionField;
    
    private fmi2ScalarVariableCausality causalityField;
    
    private fmi2ScalarVariableVariability variabilityField;
    
    private fmi2ScalarVariableInitial initialField;
    
    private bool initialFieldSpecified;
    
    private bool canHandleMultipleSetPerTimeInstantField;
    
    private bool canHandleMultipleSetPerTimeInstantFieldSpecified;
    
    public fmi2ScalarVariable() {
        this.causalityField = fmi2ScalarVariableCausality.local;
        this.variabilityField = fmi2ScalarVariableVariability.continuous;
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Boolean", typeof(fmi2ScalarVariableBoolean))]
    [System.Xml.Serialization.XmlElementAttribute("Enumeration", typeof(fmi2ScalarVariableEnumeration))]
    [System.Xml.Serialization.XmlElementAttribute("Integer", typeof(fmi2ScalarVariableInteger))]
    [System.Xml.Serialization.XmlElementAttribute("Real", typeof(fmi2ScalarVariableReal))]
    [System.Xml.Serialization.XmlElementAttribute("String", typeof(fmi2ScalarVariableString))]
    public object Item {
        get {
            return this.itemField;
        }
        set {
            this.itemField = value;
        }
    }
    
    /// <remarks/>
    public fmi2Annotation Annotations {
        get {
            return this.annotationsField;
        }
        set {
            this.annotationsField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public uint valueReference {
        get {
            return this.valueReferenceField;
        }
        set {
            this.valueReferenceField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string description {
        get {
            return this.descriptionField;
        }
        set {
            this.descriptionField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(fmi2ScalarVariableCausality.local)]
    public fmi2ScalarVariableCausality causality {
        get {
            return this.causalityField;
        }
        set {
            this.causalityField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(fmi2ScalarVariableVariability.continuous)]
    public fmi2ScalarVariableVariability variability {
        get {
            return this.variabilityField;
        }
        set {
            this.variabilityField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public fmi2ScalarVariableInitial initial {
        get {
            return this.initialField;
        }
        set {
            this.initialField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool initialSpecified {
        get {
            return this.initialFieldSpecified;
        }
        set {
            this.initialFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public bool canHandleMultipleSetPerTimeInstant {
        get {
            return this.canHandleMultipleSetPerTimeInstantField;
        }
        set {
            this.canHandleMultipleSetPerTimeInstantField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool canHandleMultipleSetPerTimeInstantSpecified {
        get {
            return this.canHandleMultipleSetPerTimeInstantFieldSpecified;
        }
        set {
            this.canHandleMultipleSetPerTimeInstantFieldSpecified = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2ScalarVariableBoolean {
    
    private string declaredTypeField;
    
    private bool startField;
    
    private bool startFieldSpecified;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string declaredType {
        get {
            return this.declaredTypeField;
        }
        set {
            this.declaredTypeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public bool start {
        get {
            return this.startField;
        }
        set {
            this.startField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool startSpecified {
        get {
            return this.startFieldSpecified;
        }
        set {
            this.startFieldSpecified = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2ScalarVariableEnumeration {
    
    private string declaredTypeField;
    
    private string quantityField;
    
    private int minField;
    
    private bool minFieldSpecified;
    
    private int maxField;
    
    private bool maxFieldSpecified;
    
    private int startField;
    
    private bool startFieldSpecified;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string declaredType {
        get {
            return this.declaredTypeField;
        }
        set {
            this.declaredTypeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string quantity {
        get {
            return this.quantityField;
        }
        set {
            this.quantityField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int min {
        get {
            return this.minField;
        }
        set {
            this.minField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool minSpecified {
        get {
            return this.minFieldSpecified;
        }
        set {
            this.minFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int max {
        get {
            return this.maxField;
        }
        set {
            this.maxField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool maxSpecified {
        get {
            return this.maxFieldSpecified;
        }
        set {
            this.maxFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int start {
        get {
            return this.startField;
        }
        set {
            this.startField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool startSpecified {
        get {
            return this.startFieldSpecified;
        }
        set {
            this.startFieldSpecified = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2ScalarVariableInteger {
    
    private string declaredTypeField;
    
    private string quantityField;
    
    private int minField;
    
    private bool minFieldSpecified;
    
    private int maxField;
    
    private bool maxFieldSpecified;
    
    private int startField;
    
    private bool startFieldSpecified;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string declaredType {
        get {
            return this.declaredTypeField;
        }
        set {
            this.declaredTypeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string quantity {
        get {
            return this.quantityField;
        }
        set {
            this.quantityField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int min {
        get {
            return this.minField;
        }
        set {
            this.minField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool minSpecified {
        get {
            return this.minFieldSpecified;
        }
        set {
            this.minFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int max {
        get {
            return this.maxField;
        }
        set {
            this.maxField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool maxSpecified {
        get {
            return this.maxFieldSpecified;
        }
        set {
            this.maxFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int start {
        get {
            return this.startField;
        }
        set {
            this.startField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool startSpecified {
        get {
            return this.startFieldSpecified;
        }
        set {
            this.startFieldSpecified = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2ScalarVariableReal {
    
    private string declaredTypeField;
    
    private string quantityField;
    
    private string unitField;
    
    private string displayUnitField;
    
    private bool relativeQuantityField;
    
    private double minField;
    
    private bool minFieldSpecified;
    
    private double maxField;
    
    private bool maxFieldSpecified;
    
    private double nominalField;
    
    private bool nominalFieldSpecified;
    
    private bool unboundedField;
    
    private double startField;
    
    private bool startFieldSpecified;
    
    private uint derivativeField;
    
    private bool derivativeFieldSpecified;
    
    private bool reinitField;
    
    public fmi2ScalarVariableReal() {
        this.relativeQuantityField = false;
        this.unboundedField = false;
        this.reinitField = false;
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string declaredType {
        get {
            return this.declaredTypeField;
        }
        set {
            this.declaredTypeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string quantity {
        get {
            return this.quantityField;
        }
        set {
            this.quantityField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string unit {
        get {
            return this.unitField;
        }
        set {
            this.unitField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string displayUnit {
        get {
            return this.displayUnitField;
        }
        set {
            this.displayUnitField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool relativeQuantity {
        get {
            return this.relativeQuantityField;
        }
        set {
            this.relativeQuantityField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double min {
        get {
            return this.minField;
        }
        set {
            this.minField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool minSpecified {
        get {
            return this.minFieldSpecified;
        }
        set {
            this.minFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double max {
        get {
            return this.maxField;
        }
        set {
            this.maxField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool maxSpecified {
        get {
            return this.maxFieldSpecified;
        }
        set {
            this.maxFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double nominal {
        get {
            return this.nominalField;
        }
        set {
            this.nominalField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool nominalSpecified {
        get {
            return this.nominalFieldSpecified;
        }
        set {
            this.nominalFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool unbounded {
        get {
            return this.unboundedField;
        }
        set {
            this.unboundedField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double start {
        get {
            return this.startField;
        }
        set {
            this.startField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool startSpecified {
        get {
            return this.startFieldSpecified;
        }
        set {
            this.startFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public uint derivative {
        get {
            return this.derivativeField;
        }
        set {
            this.derivativeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool derivativeSpecified {
        get {
            return this.derivativeFieldSpecified;
        }
        set {
            this.derivativeFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool reinit {
        get {
            return this.reinitField;
        }
        set {
            this.reinitField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2ScalarVariableString {
    
    private string declaredTypeField;
    
    private string startField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string declaredType {
        get {
            return this.declaredTypeField;
        }
        set {
            this.declaredTypeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string start {
        get {
            return this.startField;
        }
        set {
            this.startField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class fmi2Annotation {
    
    private fmi2AnnotationTool[] toolField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Tool")]
    public fmi2AnnotationTool[] Tool {
        get {
            return this.toolField;
        }
        set {
            this.toolField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2AnnotationTool {
    
    private System.Xml.XmlElement anyField;
    
    private string nameField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAnyElementAttribute()]
    public System.Xml.XmlElement Any {
        get {
            return this.anyField;
        }
        set {
            this.anyField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public enum fmi2ScalarVariableCausality {
    
    /// <remarks/>
    parameter,
    
    /// <remarks/>
    calculatedParameter,
    
    /// <remarks/>
    input,
    
    /// <remarks/>
    output,
    
    /// <remarks/>
    local,
    
    /// <remarks/>
    independent,
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public enum fmi2ScalarVariableVariability {
    
    /// <remarks/>
    constant,
    
    /// <remarks/>
    @fixed,
    
    /// <remarks/>
    tunable,
    
    /// <remarks/>
    discrete,
    
    /// <remarks/>
    continuous,
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public enum fmi2ScalarVariableInitial {
    
    /// <remarks/>
    exact,
    
    /// <remarks/>
    approx,
    
    /// <remarks/>
    calculated,
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class fmi2SimpleType {
    
    private object itemField;
    
    private ItemChoiceType itemElementNameField;
    
    private string nameField;
    
    private string descriptionField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Boolean", typeof(object))]
    [System.Xml.Serialization.XmlElementAttribute("Enumeration", typeof(fmi2SimpleTypeEnumeration))]
    [System.Xml.Serialization.XmlElementAttribute("Integer", typeof(fmi2SimpleTypeInteger))]
    [System.Xml.Serialization.XmlElementAttribute("Real", typeof(fmi2SimpleTypeReal))]
    [System.Xml.Serialization.XmlElementAttribute("String", typeof(object))]
    [System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemElementName")]
    public object Item {
        get {
            return this.itemField;
        }
        set {
            this.itemField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public ItemChoiceType ItemElementName {
        get {
            return this.itemElementNameField;
        }
        set {
            this.itemElementNameField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string description {
        get {
            return this.descriptionField;
        }
        set {
            this.descriptionField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2SimpleTypeEnumeration {
    
    private fmi2SimpleTypeEnumerationItem[] itemField;
    
    private string quantityField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Item")]
    public fmi2SimpleTypeEnumerationItem[] Item {
        get {
            return this.itemField;
        }
        set {
            this.itemField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string quantity {
        get {
            return this.quantityField;
        }
        set {
            this.quantityField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2SimpleTypeEnumerationItem {
    
    private string nameField;
    
    private int valueField;
    
    private string descriptionField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int value {
        get {
            return this.valueField;
        }
        set {
            this.valueField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string description {
        get {
            return this.descriptionField;
        }
        set {
            this.descriptionField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2SimpleTypeInteger {
    
    private string quantityField;
    
    private int minField;
    
    private bool minFieldSpecified;
    
    private int maxField;
    
    private bool maxFieldSpecified;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string quantity {
        get {
            return this.quantityField;
        }
        set {
            this.quantityField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int min {
        get {
            return this.minField;
        }
        set {
            this.minField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool minSpecified {
        get {
            return this.minFieldSpecified;
        }
        set {
            this.minFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int max {
        get {
            return this.maxField;
        }
        set {
            this.maxField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool maxSpecified {
        get {
            return this.maxFieldSpecified;
        }
        set {
            this.maxFieldSpecified = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2SimpleTypeReal {
    
    private string quantityField;
    
    private string unitField;
    
    private string displayUnitField;
    
    private bool relativeQuantityField;
    
    private double minField;
    
    private bool minFieldSpecified;
    
    private double maxField;
    
    private bool maxFieldSpecified;
    
    private double nominalField;
    
    private bool nominalFieldSpecified;
    
    private bool unboundedField;
    
    public fmi2SimpleTypeReal() {
        this.relativeQuantityField = false;
        this.unboundedField = false;
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string quantity {
        get {
            return this.quantityField;
        }
        set {
            this.quantityField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string unit {
        get {
            return this.unitField;
        }
        set {
            this.unitField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string displayUnit {
        get {
            return this.displayUnitField;
        }
        set {
            this.displayUnitField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool relativeQuantity {
        get {
            return this.relativeQuantityField;
        }
        set {
            this.relativeQuantityField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double min {
        get {
            return this.minField;
        }
        set {
            this.minField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool minSpecified {
        get {
            return this.minFieldSpecified;
        }
        set {
            this.minFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double max {
        get {
            return this.maxField;
        }
        set {
            this.maxField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool maxSpecified {
        get {
            return this.maxFieldSpecified;
        }
        set {
            this.maxFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double nominal {
        get {
            return this.nominalField;
        }
        set {
            this.nominalField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool nominalSpecified {
        get {
            return this.nominalFieldSpecified;
        }
        set {
            this.nominalFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool unbounded {
        get {
            return this.unboundedField;
        }
        set {
            this.unboundedField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(IncludeInSchema=false)]
public enum ItemChoiceType {
    
    /// <remarks/>
    Boolean,
    
    /// <remarks/>
    Enumeration,
    
    /// <remarks/>
    Integer,
    
    /// <remarks/>
    Real,
    
    /// <remarks/>
    String,
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class fmi2Unit {
    
    private fmi2UnitBaseUnit baseUnitField;
    
    private fmi2UnitDisplayUnit[] displayUnitField;
    
    private string nameField;
    
    /// <remarks/>
    public fmi2UnitBaseUnit BaseUnit {
        get {
            return this.baseUnitField;
        }
        set {
            this.baseUnitField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("DisplayUnit")]
    public fmi2UnitDisplayUnit[] DisplayUnit {
        get {
            return this.displayUnitField;
        }
        set {
            this.displayUnitField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2UnitBaseUnit {
    
    private int kgField;
    
    private int mField;
    
    private int sField;
    
    private int aField;
    
    private int kField;
    
    private int molField;
    
    private int cdField;
    
    private int radField;
    
    private double factorField;
    
    private double offsetField;
    
    public fmi2UnitBaseUnit() {
        this.kgField = 0;
        this.mField = 0;
        this.sField = 0;
        this.aField = 0;
        this.kField = 0;
        this.molField = 0;
        this.cdField = 0;
        this.radField = 0;
        this.factorField = 1D;
        this.offsetField = 0D;
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0)]
    public int kg {
        get {
            return this.kgField;
        }
        set {
            this.kgField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0)]
    public int m {
        get {
            return this.mField;
        }
        set {
            this.mField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0)]
    public int s {
        get {
            return this.sField;
        }
        set {
            this.sField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0)]
    public int A {
        get {
            return this.aField;
        }
        set {
            this.aField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0)]
    public int K {
        get {
            return this.kField;
        }
        set {
            this.kField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0)]
    public int mol {
        get {
            return this.molField;
        }
        set {
            this.molField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0)]
    public int cd {
        get {
            return this.cdField;
        }
        set {
            this.cdField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0)]
    public int rad {
        get {
            return this.radField;
        }
        set {
            this.radField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(1D)]
    public double factor {
        get {
            return this.factorField;
        }
        set {
            this.factorField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0D)]
    public double offset {
        get {
            return this.offsetField;
        }
        set {
            this.offsetField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmi2UnitDisplayUnit {
    
    private string nameField;
    
    private double factorField;
    
    private double offsetField;
    
    public fmi2UnitDisplayUnit() {
        this.factorField = 1D;
        this.offsetField = 0D;
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(1D)]
    public double factor {
        get {
            return this.factorField;
        }
        set {
            this.factorField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(0D)]
    public double offset {
        get {
            return this.offsetField;
        }
        set {
            this.offsetField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionCoSimulation {
    
    private fmiModelDescriptionCoSimulationSourceFiles sourceFilesField;
    
    private string modelIdentifierField;
    
    private bool needsExecutionToolField;
    
    private bool canHandleVariableCommunicationStepSizeField;
    
    private bool canInterpolateInputsField;
    
    private uint maxOutputDerivativeOrderField;
    
    private bool canRunAsynchronuouslyField;
    
    private bool canBeInstantiatedOnlyOncePerProcessField;
    
    private bool canNotUseMemoryManagementFunctionsField;
    
    private bool canGetAndSetFMUstateField;
    
    private bool canSerializeFMUstateField;
    
    private bool providesDirectionalDerivativeField;
    
    public fmiModelDescriptionCoSimulation() {
        this.needsExecutionToolField = false;
        this.canHandleVariableCommunicationStepSizeField = false;
        this.canInterpolateInputsField = false;
        this.maxOutputDerivativeOrderField = ((uint)(0));
        this.canRunAsynchronuouslyField = false;
        this.canBeInstantiatedOnlyOncePerProcessField = false;
        this.canNotUseMemoryManagementFunctionsField = false;
        this.canGetAndSetFMUstateField = false;
        this.canSerializeFMUstateField = false;
        this.providesDirectionalDerivativeField = false;
    }
    
    /// <remarks/>
    public fmiModelDescriptionCoSimulationSourceFiles SourceFiles {
        get {
            return this.sourceFilesField;
        }
        set {
            this.sourceFilesField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string modelIdentifier {
        get {
            return this.modelIdentifierField;
        }
        set {
            this.modelIdentifierField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool needsExecutionTool {
        get {
            return this.needsExecutionToolField;
        }
        set {
            this.needsExecutionToolField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canHandleVariableCommunicationStepSize {
        get {
            return this.canHandleVariableCommunicationStepSizeField;
        }
        set {
            this.canHandleVariableCommunicationStepSizeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canInterpolateInputs {
        get {
            return this.canInterpolateInputsField;
        }
        set {
            this.canInterpolateInputsField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(typeof(uint), "0")]
    public uint maxOutputDerivativeOrder {
        get {
            return this.maxOutputDerivativeOrderField;
        }
        set {
            this.maxOutputDerivativeOrderField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canRunAsynchronuously {
        get {
            return this.canRunAsynchronuouslyField;
        }
        set {
            this.canRunAsynchronuouslyField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canBeInstantiatedOnlyOncePerProcess {
        get {
            return this.canBeInstantiatedOnlyOncePerProcessField;
        }
        set {
            this.canBeInstantiatedOnlyOncePerProcessField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canNotUseMemoryManagementFunctions {
        get {
            return this.canNotUseMemoryManagementFunctionsField;
        }
        set {
            this.canNotUseMemoryManagementFunctionsField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canGetAndSetFMUstate {
        get {
            return this.canGetAndSetFMUstateField;
        }
        set {
            this.canGetAndSetFMUstateField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool canSerializeFMUstate {
        get {
            return this.canSerializeFMUstateField;
        }
        set {
            this.canSerializeFMUstateField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    [System.ComponentModel.DefaultValueAttribute(false)]
    public bool providesDirectionalDerivative {
        get {
            return this.providesDirectionalDerivativeField;
        }
        set {
            this.providesDirectionalDerivativeField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionCoSimulationSourceFiles {
    
    private fmiModelDescriptionCoSimulationSourceFilesFile[] fileField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("File")]
    public fmiModelDescriptionCoSimulationSourceFilesFile[] File {
        get {
            return this.fileField;
        }
        set {
            this.fileField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionCoSimulationSourceFilesFile {
    
    private string nameField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionUnitDefinitions {
    
    private fmi2Unit[] unitField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Unit")]
    public fmi2Unit[] Unit {
        get {
            return this.unitField;
        }
        set {
            this.unitField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionTypeDefinitions {
    
    private fmi2SimpleType[] simpleTypeField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("SimpleType")]
    public fmi2SimpleType[] SimpleType {
        get {
            return this.simpleTypeField;
        }
        set {
            this.simpleTypeField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionLogCategories {
    
    private fmiModelDescriptionLogCategoriesCategory[] categoryField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Category")]
    public fmiModelDescriptionLogCategoriesCategory[] Category {
        get {
            return this.categoryField;
        }
        set {
            this.categoryField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionLogCategoriesCategory {
    
    private string nameField;
    
    private string descriptionField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute(DataType="normalizedString")]
    public string name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string description {
        get {
            return this.descriptionField;
        }
        set {
            this.descriptionField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionDefaultExperiment {
    
    private double startTimeField;
    
    private bool startTimeFieldSpecified;
    
    private double stopTimeField;
    
    private bool stopTimeFieldSpecified;
    
    private double toleranceField;
    
    private bool toleranceFieldSpecified;
    
    private double stepSizeField;
    
    private bool stepSizeFieldSpecified;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double startTime {
        get {
            return this.startTimeField;
        }
        set {
            this.startTimeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool startTimeSpecified {
        get {
            return this.startTimeFieldSpecified;
        }
        set {
            this.startTimeFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double stopTime {
        get {
            return this.stopTimeField;
        }
        set {
            this.stopTimeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool stopTimeSpecified {
        get {
            return this.stopTimeFieldSpecified;
        }
        set {
            this.stopTimeFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double tolerance {
        get {
            return this.toleranceField;
        }
        set {
            this.toleranceField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool toleranceSpecified {
        get {
            return this.toleranceFieldSpecified;
        }
        set {
            this.toleranceFieldSpecified = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public double stepSize {
        get {
            return this.stepSizeField;
        }
        set {
            this.stepSizeField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool stepSizeSpecified {
        get {
            return this.stepSizeFieldSpecified;
        }
        set {
            this.stepSizeFieldSpecified = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionModelVariables {
    
    private fmi2ScalarVariable[] scalarVariableField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("ScalarVariable")]
    public fmi2ScalarVariable[] ScalarVariable {
        get {
            return this.scalarVariableField;
        }
        set {
            this.scalarVariableField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionModelStructure {
    
    private fmi2VariableDependency outputsField;
    
    private fmi2VariableDependency derivativesField;
    
    private fmiModelDescriptionModelStructureInitialUnknowns initialUnknownsField;
    
    /// <remarks/>
    public fmi2VariableDependency Outputs {
        get {
            return this.outputsField;
        }
        set {
            this.outputsField = value;
        }
    }
    
    /// <remarks/>
    public fmi2VariableDependency Derivatives {
        get {
            return this.derivativesField;
        }
        set {
            this.derivativesField = value;
        }
    }
    
    /// <remarks/>
    public fmiModelDescriptionModelStructureInitialUnknowns InitialUnknowns {
        get {
            return this.initialUnknownsField;
        }
        set {
            this.initialUnknownsField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionModelStructureInitialUnknowns {
    
    private fmiModelDescriptionModelStructureInitialUnknownsUnknown[] unknownField;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Unknown")]
    public fmiModelDescriptionModelStructureInitialUnknownsUnknown[] Unknown {
        get {
            return this.unknownField;
        }
        set {
            this.unknownField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class fmiModelDescriptionModelStructureInitialUnknownsUnknown {
    
    private uint indexField;
    
    private uint[] dependenciesField;
    
    private fmiModelDescriptionModelStructureInitialUnknownsUnknownDependenciesKind dependenciesKindField;
    
    private bool dependenciesKindFieldSpecified;
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public uint index {
        get {
            return this.indexField;
        }
        set {
            this.indexField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public uint[] dependencies {
        get {
            return this.dependenciesField;
        }
        set {
            this.dependenciesField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public fmiModelDescriptionModelStructureInitialUnknownsUnknownDependenciesKind dependenciesKind {
        get {
            return this.dependenciesKindField;
        }
        set {
            this.dependenciesKindField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlIgnoreAttribute()]
    public bool dependenciesKindSpecified {
        get {
            return this.dependenciesKindFieldSpecified;
        }
        set {
            this.dependenciesKindFieldSpecified = value;
        }
    }
}

/// <remarks/>
[System.FlagsAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public enum fmiModelDescriptionModelStructureInitialUnknownsUnknownDependenciesKind {
    
    /// <remarks/>
    dependent = 1,
    
    /// <remarks/>
    constant = 2,
    
    /// <remarks/>
    @fixed = 4,
    
    /// <remarks/>
    tunable = 8,
    
    /// <remarks/>
    discrete = 16,
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public enum fmiModelDescriptionVariableNamingConvention {
    
    /// <remarks/>
    flat,
    
    /// <remarks/>
    structured,
}
