From 7d9335137c7ea41aca29f44916a58c8881c929ae Mon Sep 17 00:00:00 2001 From: imcovangent <I.vanGent@tudelft.nl> Date: Mon, 30 Jul 2018 15:48:58 +0200 Subject: [PATCH] Updated all version indications to 0.9(.0). Added new settings for convergers. Added saving and loading of new converger settings. Former-commit-id: ef614ffd7d6b4832a8431246199ffd0d57d1c69b --- examples/scripts/ssbj_mda.py | 2 +- kadmos/__init__.py | 2 +- kadmos/cmdows/cmdows.py | 2 +- kadmos/cmdows/schemas/0.9/cmdows.xml | 941 ++++++++++++++++++ kadmos/cmdows/schemas/0.9/cmdows.xsd | 1307 ++++++++++++++++++++++++++ kadmos/graph/graph_data.py | 72 +- kadmos/graph/graph_kadmos.py | 2 +- 7 files changed, 2292 insertions(+), 36 deletions(-) create mode 100644 kadmos/cmdows/schemas/0.9/cmdows.xml create mode 100644 kadmos/cmdows/schemas/0.9/cmdows.xsd diff --git a/examples/scripts/ssbj_mda.py b/examples/scripts/ssbj_mda.py index a418973a6..aa9613c52 100644 --- a/examples/scripts/ssbj_mda.py +++ b/examples/scripts/ssbj_mda.py @@ -127,7 +127,7 @@ fpg.graph['description'] = 'Fundamental problem graph to solve the super-sonic b # Define settings of the problem formulation fpg.add_problem_formulation(mdao_definition_fpg, function_order) -fpg.graph['problem_formulation']['coupled_functions_groups'] = [['Structures'], ['Aerodynamics'], ['Propulsion']] +#fpg.graph['problem_formulation']['coupled_functions_groups'] = [['Structures'], ['Aerodynamics'], ['Propulsion']] # Assign objective fpg.mark_as_qois([nd for nd in rcg.find_all_nodes(category='variable') if nd.endswith('objectives/R')]) diff --git a/kadmos/__init__.py b/kadmos/__init__.py index deded3247..3e2f46a3a 100644 --- a/kadmos/__init__.py +++ b/kadmos/__init__.py @@ -1 +1 @@ -__version__ = "0.8.2" +__version__ = "0.9.0" diff --git a/kadmos/cmdows/cmdows.py b/kadmos/cmdows/cmdows.py index f23ad7d34..72620b1df 100644 --- a/kadmos/cmdows/cmdows.py +++ b/kadmos/cmdows/cmdows.py @@ -45,7 +45,7 @@ class CMDOWS(object): if file_path and element is None: self.root = ElementTree(file=file_path, parser=parser).getroot() if not file_path and element is None: - cmdows_version = '0.8' # TODO: pick up version number based on folder names in schemas folder (?) + cmdows_version = '0.9' # TODO: pick up version number based on folder names in schemas folder (?) xmlns = '{}{}{}'.format(self.XMLNS_PREFIX, cmdows_version, self.XMLNS_SUFFIX) self.root = Element('cmdows', attrib={"{" + self.XSI + "}noNamespaceSchemaLocation": xmlns}, nsmap={'xsi': self.XSI}) diff --git a/kadmos/cmdows/schemas/0.9/cmdows.xml b/kadmos/cmdows/schemas/0.9/cmdows.xml new file mode 100644 index 000000000..7a0a30194 --- /dev/null +++ b/kadmos/cmdows/schemas/0.9/cmdows.xml @@ -0,0 +1,941 @@ +<cmdows> + <header> + <creator>string</creator> + <description>string</description> + <timestamp>2008-09-29T03:49:45</timestamp> + <fileVersion>string</fileVersion> + <cmdowsVersion>string</cmdowsVersion> + <!--Optional:--> + <updates> + <!--1 or more repetitions:--> + <update> + <modification>string</modification> + <creator>string</creator> + <timestamp>2014-09-19T01:18:33</timestamp> + <fileVersion>string</fileVersion> + <cmdowsVersion>string</cmdowsVersion> + </update> + </updates> + <!--Optional:--> + <organization> + <contacts> + <!--1 or more repetitions:--> + <contact uID="string"> + <name>string</name> + <!--Optional:--> + <email>string</email> + <!--Optional:--> + <company>anyType</company> + <!--Optional:--> + <department>anyType</department> + <!--Optional:--> + <function>string</function> + <!--Optional:--> + <address>string</address> + <!--Optional:--> + <telephone>string</telephone> + <!--Optional:--> + <country>string</country> + </contact> + </contacts> + <!--Optional:--> + <organigram> + <!--Optional:--> + <architects> + <!--1 or more repetitions:--> + <architect> + <contactUID>anyType</contactUID> + </architect> + </architects> + <!--Optional:--> + <integrators> + <!--1 or more repetitions:--> + <integrator> + <contactUID>anyType</contactUID> + </integrator> + </integrators> + <!--Optional:--> + <collaborativeEngineers> + <!--1 or more repetitions:--> + <collaborativeEngineer> + <contactUID>anyType</contactUID> + </collaborativeEngineer> + </collaborativeEngineers> + <!--Optional:--> + <toolSpecialists> + <!--1 or more repetitions:--> + <toolSpecialist> + <contactUID>anyType</contactUID> + </toolSpecialist> + </toolSpecialists> + <!--Optional:--> + <customers> + <!--1 or more repetitions:--> + <customer> + <contactUID>string</contactUID> + </customer> + </customers> + <!--Optional:--> + <projectSpecific>anyType</projectSpecific> + </organigram> + </organization> + </header> + <executableBlocks> + <!--Optional:--> + <designCompetences> + <!--1 or more repetitions:--> + <designCompetence uID="string"> + <label>string</label> + <instanceID>string</instanceID> + <inputs> + <!--1 or more repetitions:--> + <input> + <parameterUID>string</parameterUID> + <!--Optional:--> + <validRanges> + <!--Zero or more repetitions:--> + <limitRange> + <minimum>1.5E2</minimum> + <maximum>1.5E2</maximum> + </limitRange> + <!--Zero or more repetitions:--> + <listRange> + <!--1 or more repetitions:--> + <listRangeItem>string</listRangeItem> + </listRange> + </validRanges> + </input> + </inputs> + <outputs> + <!--1 or more repetitions:--> + <output> + <parameterUID>string</parameterUID> + </output> + </outputs> + <!--You have a CHOICE of the next 2 items at this level--> + <!--Optional:--> + <relatedInstanceUID>string</relatedInstanceUID> + <ID>string</ID> + <modeID>string</modeID> + <version>string</version> + <!--Optional:--> + <metadata> + <!--Optional:--> + <generalInfo> + <!--Optional:--> + <description>string</description> + <!--Optional:--> + <status>string</status> + <!--Optional:--> + <creationDate>2006-08-19+02:00</creationDate> + <!--Optional:--> + <owner> + <!--You have a CHOICE of the next 2 items at this level--> + <contact uID="string"> + <name>string</name> + <!--Optional:--> + <email>string</email> + <!--Optional:--> + <company>anyType</company> + <!--Optional:--> + <department>anyType</department> + <!--Optional:--> + <function>string</function> + <!--Optional:--> + <address>string</address> + <!--Optional:--> + <telephone>string</telephone> + <!--Optional:--> + <country>string</country> + </contact> + <contactUID>string</contactUID> + </owner> + <!--Optional:--> + <creator> + <!--You have a CHOICE of the next 2 items at this level--> + <contact uID="string"> + <name>string</name> + <!--Optional:--> + <email>string</email> + <!--Optional:--> + <company>anyType</company> + <!--Optional:--> + <department>anyType</department> + <!--Optional:--> + <function>string</function> + <!--Optional:--> + <address>string</address> + <!--Optional:--> + <telephone>string</telephone> + <!--Optional:--> + <country>string</country> + </contact> + <contactUID>string</contactUID> + </creator> + <!--Optional:--> + <operator> + <!--You have a CHOICE of the next 2 items at this level--> + <contact uID="string"> + <name>string</name> + <!--Optional:--> + <email>string</email> + <!--Optional:--> + <company>anyType</company> + <!--Optional:--> + <department>anyType</department> + <!--Optional:--> + <function>string</function> + <!--Optional:--> + <address>string</address> + <!--Optional:--> + <telephone>string</telephone> + <!--Optional:--> + <country>string</country> + </contact> + <contactUID>string</contactUID> + </operator> + <!--Optional:--> + <modelDefinition> + <!--Optional:--> + <referenceDataSet>string</referenceDataSet> + <!--Optional:--> + <analysisMethod>string</analysisMethod> + <!--Optional:--> + <fittingMethod>string</fittingMethod> + <!--Optional:--> + <relatedDesignCompetenceID>string</relatedDesignCompetenceID> + <!--Optional:--> + <relatedDesignCompetenceVersion>string</relatedDesignCompetenceVersion> + </modelDefinition> + </generalInfo> + <!--Optional:--> + <performanceInfo> + <!--Optional:--> + <precision>1000.00</precision> + <!--Optional:--> + <fidelityLevel>1000.00</fidelityLevel> + <!--Optional:--> + <runTime>1000.00</runTime> + <!--Optional:--> + <standardDeviation>1000.00</standardDeviation> + <!--Optional:--> + <verifications> + <!--1 or more repetitions:--> + <verification> + <method>string</method> + <verifier> + <!--You have a CHOICE of the next 2 items at this level--> + <contact uID="string"> + <name>string</name> + <!--Optional:--> + <email>string</email> + <!--Optional:--> + <company>anyType</company> + <!--Optional:--> + <department>anyType</department> + <!--Optional:--> + <function>string</function> + <!--Optional:--> + <address>string</address> + <!--Optional:--> + <telephone>string</telephone> + <!--Optional:--> + <country>string</country> + </contact> + <contactUID>string</contactUID> + </verifier> + <result>string</result> + <date>2009-05-16</date> + <version>string</version> + </verification> + </verifications> + </performanceInfo> + <!--Optional:--> + <executionInfo> + <!--Optional:--> + <availabilityConstraints> + <!--Optional:--> + <fromDate>2003-08-09+02:00</fromDate> + <!--Optional:--> + <toDate>2012-09-13+02:00</toDate> + <!--Optional:--> + <fromOfficeHour>09:16:36</fromOfficeHour> + <!--Optional:--> + <toOfficeHour>17:05:32</toOfficeHour> + <!--Optional:--> + <maximumTotalExecutions>3</maximumTotalExecutions> + <!--Optional:--> + <maximumParallelExecutions>3</maximumParallelExecutions> + </availabilityConstraints> + <!--Optional:--> + <authorizationConstraints> + <!--Optional:--> + <authorizedUsers> + <!--1 or more repetitions:--> + <authorizedUser> + <!--You have a CHOICE of the next 2 items at this level--> + <contact uID="string"> + <name>string</name> + <!--Optional:--> + <email>string</email> + <!--Optional:--> + <company>anyType</company> + <!--Optional:--> + <department>anyType</department> + <!--Optional:--> + <function>string</function> + <!--Optional:--> + <address>string</address> + <!--Optional:--> + <telephone>string</telephone> + <!--Optional:--> + <country>string</country> + </contact> + <contactUID>string</contactUID> + </authorizedUser> + </authorizedUsers> + <!--Optional:--> + <unauthorizedUsers> + <!--1 or more repetitions:--> + <unauthorizedUser> + <!--You have a CHOICE of the next 2 items at this level--> + <contact uID="string"> + <name>string</name> + <!--Optional:--> + <email>string</email> + <!--Optional:--> + <company>anyType</company> + <!--Optional:--> + <department>anyType</department> + <!--Optional:--> + <function>string</function> + <!--Optional:--> + <address>string</address> + <!--Optional:--> + <telephone>string</telephone> + <!--Optional:--> + <country>string</country> + </contact> + <contactUID>string</contactUID> + </unauthorizedUser> + </unauthorizedUsers> + </authorizationConstraints> + <!--Optional:--> + <remoteComponentInfo> + <!--Optional:--> + <jobSettings> + <!--Optional:--> + <singleOrMultiExecution>single</singleOrMultiExecution> + <!--Optional:--> + <jobName>string</jobName> + <!--Optional:--> + <remoteEngineer> + <!--You have a CHOICE of the next 2 items at this level--> + <contact uID="string"> + <name>string</name> + <!--Optional:--> + <email>string</email> + <!--Optional:--> + <company>anyType</company> + <!--Optional:--> + <department>anyType</department> + <!--Optional:--> + <function>string</function> + <!--Optional:--> + <address>string</address> + <!--Optional:--> + <telephone>string</telephone> + <!--Optional:--> + <country>string</country> + </contact> + <contactUID>string</contactUID> + </remoteEngineer> + <!--Optional:--> + <notificationMessage>string</notificationMessage> + </jobSettings> + <!--Optional:--> + <dataExchangeSettings> + <!--Optional:--> + <dataserver>string</dataserver> + <!--Optional:--> + <urlsite>string</urlsite> + <!--Optional:--> + <webAuthenticationProtocol>string</webAuthenticationProtocol> + <!--Optional:--> + <context>string</context> + <!--Optional:--> + <folder>string</folder> + <!--Optional:--> + <pollingTime>1.5E2</pollingTime> + <!--Optional:--> + <maxIterations>3</maxIterations> + <!--Optional:--> + <timeOut>1.5E2</timeOut> + <!--Optional:--> + <sharedFilePolicy>string</sharedFilePolicy> + <!--Optional:--> + <servermutex>string</servermutex> + </dataExchangeSettings> + </remoteComponentInfo> + </executionInfo> + </metadata> + <!--Optional:--> + <projectSpecific>anyType</projectSpecific> + </designCompetence> + </designCompetences> + <!--Optional:--> + <mathematicalFunctions> + <!--1 or more repetitions:--> + <mathematicalFunction uID="string"> + <label>string</label> + <functionType>regular</functionType> + <inputs> + <!--1 or more repetitions:--> + <input> + <parameterUID>string</parameterUID> + <!--Optional:--> + <equationLabel>string string</equationLabel> + <!--Optional:--> + <validRanges> + <!--Zero or more repetitions:--> + <limitRange> + <minimum>1.5E2</minimum> + <maximum>1.5E2</maximum> + </limitRange> + <!--Zero or more repetitions:--> + <listRange> + <!--1 or more repetitions:--> + <listRangeItem>string</listRangeItem> + </listRange> + </validRanges> + </input> + </inputs> + <outputs> + <!--1 or more repetitions:--> + <output> + <parameterUID>string</parameterUID> + <!--You have a CHOICE of the next 2 items at this level--> + <equations uID="string"> + <!--1 or more repetitions:--> + <equation language="string">string</equation> + </equations> + <equationsUID>string</equationsUID> + </output> + </outputs> + </mathematicalFunction> + </mathematicalFunctions> + </executableBlocks> + <parameters> + <!--1 or more repetitions:--> + <parameter uID="string"> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedInstanceUID>string</relatedInstanceUID> + <!--Optional:--> + <description>string</description> + <!--Optional:--> + <note>string</note> + <!--Optional:--> + <unit>string</unit> + <!--Optional:--> + <dataType>string</dataType> + </parameter> + </parameters> + <!--Optional:--> + <problemDefinition uID="string"> + <problemFormulation> + <mdaoArchitecture>string</mdaoArchitecture> + <!--Optional:--> + <convergerType>string</convergerType> + <executableBlocksOrder> + <!--1 or more repetitions:--> + <executableBlock position="3">string</executableBlock> + </executableBlocksOrder> + <allowUnconvergedCouplings>false</allowUnconvergedCouplings> + <!--Optional:--> + <doeSettings> + <doeMethod>string</doeMethod> + <!--Optional:--> + <doeSeed>1000.00</doeSeed> + <!--Optional:--> + <doeRuns>3</doeRuns> + </doeSettings> + </problemFormulation> + <problemRoles> + <parameters> + <!--Optional:--> + <designVariables> + <!--1 or more repetitions:--> + <designVariable uID="string"> + <parameterUID>string</parameterUID> + <!--Optional:--> + <nominalValue>1000.00</nominalValue> + <!--Optional:--> + <validRanges> + <!--Zero or more repetitions:--> + <limitRange> + <minimum>1.5E2</minimum> + <maximum>1.5E2</maximum> + </limitRange> + <!--Zero or more repetitions:--> + <listRange> + <!--1 or more repetitions:--> + <listRangeItem>string</listRangeItem> + </listRange> + </validRanges> + <!--Optional:--> + <variableType>int</variableType> + <!--Optional:--> + <samples> + <!--1 or more repetitions:--> + <sample position="string">1000.00</sample> + </samples> + </designVariable> + </designVariables> + <!--Optional:--> + <objectiveVariables> + <!--1 or more repetitions:--> + <objectiveVariable uID="string"> + <parameterUID>string</parameterUID> + </objectiveVariable> + </objectiveVariables> + <!--Optional:--> + <constraintVariables> + <!--1 or more repetitions:--> + <constraintVariable uID="string"> + <parameterUID>string</parameterUID> + <!--Optional:--> + <constraintType>string</constraintType> + <!--Optional:--> + <constraintOperator>anyType</constraintOperator> + <!--Optional:--> + <referenceValue>anyType</referenceValue> + <!--Optional:--> + <requiredEqualityPrecision>1000.00</requiredEqualityPrecision> + </constraintVariable> + </constraintVariables> + <!--Optional:--> + <stateVariables> + <!--1 or more repetitions:--> + <stateVariable uID="string"> + <parameterUID>string</parameterUID> + </stateVariable> + </stateVariables> + </parameters> + <executableBlocks> + <!--Optional:--> + <preCouplingBlocks> + <!--1 or more repetitions:--> + <preCouplingBlock>string</preCouplingBlock> + </preCouplingBlocks> + <!--Optional:--> + <coupledBlocks> + <!--1 or more repetitions:--> + <coupledBlock>string</coupledBlock> + </coupledBlocks> + <!--Optional:--> + <postCouplingBlocks> + <!--1 or more repetitions:--> + <postCouplingBlock>string</postCouplingBlock> + </postCouplingBlocks> + <!--Optional:--> + <preDesvarsBlocks> + <!--1 or more repetitions:--> + <preDesvarsBlock>string</preDesvarsBlock> + </preDesvarsBlocks> + <!--Optional:--> + <postDesvarsBlocks> + <!--1 or more repetitions:--> + <postDesvarBlock>string</postDesvarBlock> + </postDesvarsBlocks> + </executableBlocks> + </problemRoles> + </problemDefinition> + <!--Optional:--> + <workflow> + <!--Optional:--> + <problemDefinitionUID>string</problemDefinitionUID> + <dataGraph> + <name>string</name> + <edges> + <!--1 or more repetitions:--> + <edge> + <!--You have a CHOICE of the next 2 items at this level--> + <fromParameterUID>string</fromParameterUID> + <fromExecutableBlockUID>string</fromExecutableBlockUID> + <!--You have a CHOICE of the next 2 items at this level--> + <toParameterUID>anyType</toParameterUID> + <toExecutableBlockUID>anyType</toExecutableBlockUID> + </edge> + </edges> + <!--Optional:--> + <metadata>anyType</metadata> + </dataGraph> + <!--Optional:--> + <processGraph> + <name>string</name> + <edges> + <!--1 or more repetitions:--> + <edge> + <fromExecutableBlockUID>string</fromExecutableBlockUID> + <toExecutableBlockUID>string</toExecutableBlockUID> + <processStepNumber>3</processStepNumber> + </edge> + </edges> + <nodes> + <!--1 or more repetitions:--> + <node> + <referenceUID>string</referenceUID> + <processStepNumber>3</processStepNumber> + <!--Optional:--> + <convergerStepNumber>3</convergerStepNumber> + <diagonalPosition>3</diagonalPosition> + </node> + </nodes> + <!--Optional:--> + <metadata> + <!--Optional:--> + <loopNesting relatedUID="string"> + <!--Optional:--> + <loopElements> + <!--1 or more repetitions:--> + <loopElement/> + </loopElements> + <!--Optional:--> + <functionElements> + <!--1 or more repetitions:--> + <functionElement>string</functionElement> + </functionElements> + </loopNesting> + <executableBlocksOrder> + <!--1 or more repetitions:--> + <executableBlock position="3">string</executableBlock> + </executableBlocksOrder> + </metadata> + </processGraph> + </workflow> + <!--Optional:--> + <architectureElements> + <parameters> + <!--Optional:--> + <initialGuessCouplingVariables> + <!--1 or more repetitions:--> + <initialGuessCouplingVariable uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </initialGuessCouplingVariable> + </initialGuessCouplingVariables> + <!--Optional:--> + <finalCouplingVariables> + <!--1 or more repetitions:--> + <finalCouplingVariable uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </finalCouplingVariable> + </finalCouplingVariables> + <!--Optional:--> + <couplingCopyVariables> + <!--1 or more repetitions:--> + <couplingCopyVariable uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </couplingCopyVariable> + </couplingCopyVariables> + <!--Optional:--> + <initialGuessDesignVariables> + <!--1 or more repetitions:--> + <initialGuessDesignVariable uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </initialGuessDesignVariable> + </initialGuessDesignVariables> + <!--Optional:--> + <finalDesignVariables> + <!--1 or more repetitions:--> + <finalDesignVariable uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </finalDesignVariable> + </finalDesignVariables> + <!--Optional:--> + <finalOutputVariables> + <!--1 or more repetitions:--> + <finalOutputVariable uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </finalOutputVariable> + </finalOutputVariables> + <!--Optional:--> + <copyDesignVariables> + <!--1 or more repetitions:--> + <copyDesignVariable uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </copyDesignVariable> + </copyDesignVariables> + <!--Optional:--> + <consistencyConstraintVariables> + <!--1 or more repetitions:--> + <consistencyConstraintVariable uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </consistencyConstraintVariable> + </consistencyConstraintVariables> + <!--Optional:--> + <doeInputSampleLists> + <!--1 or more repetitions:--> + <doeInputSampleList uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </doeInputSampleList> + </doeInputSampleLists> + <!--Optional:--> + <doeOutputSampleLists> + <!--1 or more repetitions:--> + <doeOutputSampleList uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </doeOutputSampleList> + </doeOutputSampleLists> + <!--Optional:--> + <surrogateModelApproximates> + <!--1 or more repetitions:--> + <surrogateModelApproximate uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </surrogateModelApproximate> + </surrogateModelApproximates> + <!--Optional:--> + <couplingWeights> + <!--1 or more repetitions:--> + <couplingWeight uID="string"> + <!--You have a CHOICE of the next 2 items at this level--> + <relatedParameterUID>string</relatedParameterUID> + <relatedInstanceUID>string</relatedInstanceUID> + <label>string</label> + <instanceID>3</instanceID> + <!--Optional:--> + <schemaPath>string</schemaPath> + </couplingWeight> + </couplingWeights> + </parameters> + <executableBlocks> + <!--Optional:--> + <coordinators> + <!--1 or more repetitions:--> + <coordinator uID="string"> + <label>string</label> + <!--Optional:--> + <settings>string</settings> + </coordinator> + </coordinators> + <!--Optional:--> + <optimizers> + <!--1 or more repetitions:--> + <optimizer uID="string"> + <!--Optional:--> + <label>string</label> + <!--Optional:--> + <settings> + <maximumIterations>1.5E2</maximumIterations> + <algorithm>string</algorithm> + <applyScaling>false</applyScaling> + <maximumFunctionEvaluations>1.5E2</maximumFunctionEvaluations> + <constraintTolerance>1.5E2</constraintTolerance> + <convergenceTolerance>1.5E2</convergenceTolerance> + </settings> + <!--Optional:--> + <designVariables> + <!--1 or more repetitions:--> + <designVariable> + <designVariableUID>string</designVariableUID> + </designVariable> + </designVariables> + <!--Optional:--> + <objectiveVariables> + <!--1 or more repetitions:--> + <objectiveVariable> + <objectiveVariableUID>string</objectiveVariableUID> + </objectiveVariable> + </objectiveVariables> + <!--Optional:--> + <constraintVariables> + <!--1 or more repetitions:--> + <constraintVariable> + <constraintVariableUID>string</constraintVariableUID> + </constraintVariable> + </constraintVariables> + </optimizer> + </optimizers> + <!--Optional:--> + <convergers> + <!--1 or more repetitions:--> + <converger uID="string"> + <!--Optional:--> + <label>string</label> + <!--Optional:--> + <settings> + <linearSolver> + <method>string</method> + <lastIterationsToConsider>3</lastIterationsToConsider> + <maximumIterations>3</maximumIterations> + <convergenceToleranceRelative>1.5E2</convergenceToleranceRelative> + <convergenceToleranceAbsolute>1.5E2</convergenceToleranceAbsolute> + </linearSolver> + <nonlinearSolver> + <method>string</method> + <lastIterationsToConsider>3</lastIterationsToConsider> + <maximumIterations>3</maximumIterations> + <convergenceToleranceRelative>1.5E2</convergenceToleranceRelative> + <convergenceToleranceAbsolute>1.5E2</convergenceToleranceAbsolute> + </nonlinearSolver> + </settings> + </converger> + </convergers> + <!--Optional:--> + <does> + <!--1 or more repetitions:--> + <doe uID="string"> + <label>string</label> + <settings> + <!--Optional:--> + <doeTable> + <!--1 or more repetitions:--> + <tableRow relatedParameterUID="string"> + <!--1 or more repetitions:--> + <tableElement experimentID="string">1000.00</tableElement> + </tableRow> + </doeTable> + <!--Optional:--> + <doeMethod>string</doeMethod> + <!--Optional:--> + <doeRuns>100</doeRuns> + <!--Optional:--> + <doeSeed>100</doeSeed> + </settings> + <!--Optional:--> + <designVariables> + <!--1 or more repetitions:--> + <designVariable> + <designVariableUID>string</designVariableUID> + </designVariable> + </designVariables> + </doe> + </does> + <!--Optional:--> + <surrogateModels> + <!--1 or more repetitions:--> + <surrogateModel> + <relatedExecutableBlockUID>string</relatedExecutableBlockUID> + </surrogateModel> + </surrogateModels> + <!--Optional:--> + <boundaryDeterminators> + <!--1 or more repetitions:--> + <boundaryDeterminator> + <relatedExecutableBlockUID>string</relatedExecutableBlockUID> + </boundaryDeterminator> + </boundaryDeterminators> + <!--Optional:--> + <surrogateModelBuilders> + <!--1 or more repetitions:--> + <surrogateModelBuilder> + <relatedExecutableBlockUID>string</relatedExecutableBlockUID> + </surrogateModelBuilder> + </surrogateModelBuilders> + <!--Optional:--> + <preCouplingAnalyses> + <!--1 or more repetitions:--> + <preCouplingAnalysis> + <relatedExecutableBlockUID>string</relatedExecutableBlockUID> + </preCouplingAnalysis> + </preCouplingAnalyses> + <!--Optional:--> + <preIteratorAnalyses> + <!--1 or more repetitions:--> + <preIteratorAnalysis> + <relatedExecutableBlockUID>string</relatedExecutableBlockUID> + </preIteratorAnalysis> + </preIteratorAnalyses> + <!--Optional:--> + <postIteratorAnalyses> + <!--1 or more repetitions:--> + <postIteratorAnalysis> + <relatedExecutableBlockUID>string</relatedExecutableBlockUID> + </postIteratorAnalysis> + </postIteratorAnalyses> + <!--Optional:--> + <coupledAnalyses> + <!--1 or more repetitions:--> + <coupledAnalysis> + <relatedExecutableBlockUID>string</relatedExecutableBlockUID> + </coupledAnalysis> + </coupledAnalyses> + <!--Optional:--> + <postCouplingAnalyses> + <!--1 or more repetitions:--> + <postCouplingAnalysis> + <relatedExecutableBlockUID>string</relatedExecutableBlockUID> + </postCouplingAnalysis> + </postCouplingAnalyses> + </executableBlocks> + </architectureElements> +</cmdows> \ No newline at end of file diff --git a/kadmos/cmdows/schemas/0.9/cmdows.xsd b/kadmos/cmdows/schemas/0.9/cmdows.xsd new file mode 100644 index 000000000..a62cc0681 --- /dev/null +++ b/kadmos/cmdows/schemas/0.9/cmdows.xsd @@ -0,0 +1,1307 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> + <xs:element name="cmdows"> + <xs:complexType> + <xs:sequence> + <xs:element name="header"> + <xs:complexType> + <xs:sequence> + <xs:element name="creator" type="xs:string"> + <xs:annotation> + <xs:documentation>Creator of the initial CMDOWS dataset </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="description" type="xs:string"> + <xs:annotation> + <xs:documentation>Description of the initial CMDOWS dataset</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="timestamp" type="xs:dateTime"> + <xs:annotation> + <xs:documentation>Timestamp of the initial CMDOWS dataset creation </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="fileVersion" type="xs:string"> + <xs:annotation> + <xs:documentation>Version of the initial CMDOWS dataset</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="cmdowsVersion" type="xs:string"> + <xs:annotation> + <xs:documentation>Version of the CMDOWS schema that the initial CMDOWS dataset adheres to </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="updates" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="update" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="modification" type="xs:string"> + <xs:annotation> + <xs:documentation>Description of the modification to the CMDOWS dataset</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="creator" type="xs:string"> + <xs:annotation> + <xs:documentation>Creator of the modification to the CMDOWS dataset</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="timestamp" type="xs:dateTime"> + <xs:annotation> + <xs:documentation>Timestamp of the modification to the CMDOWS dataset</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="fileVersion" type="xs:string"> + <xs:annotation> + <xs:documentation>Version of the modification to the CMDOWS dataset</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="cmdowsVersion" type="xs:string"> + <xs:annotation> + <xs:documentation>Version of the CMDOWS schema that the modification to the CMDOWS dataset adheres to </xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="organization" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="contacts"> + <xs:complexType> + <xs:sequence> + <xs:element name="contact" maxOccurs="unbounded"> + <xs:complexType> + <xs:all> + <xs:element name="name" type="xs:string"> + <xs:annotation> + <xs:documentation>Name of the contact person</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="email" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>E-Mail address of the contact person</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="company" minOccurs="0"/> + <xs:element name="department" minOccurs="0"/> + <xs:element name="function" type="xs:string" minOccurs="0"/> + <xs:element name="address" type="xs:string" minOccurs="0"/> + <xs:element name="telephone" type="xs:string" minOccurs="0"/> + <xs:element name="country" type="xs:string" minOccurs="0"/> + </xs:all> + <xs:attribute name="uID" type="xs:string" use="optional"> + <xs:annotation> + <xs:documentation>Unique ID of the contact which can be used as reference in order to avoid having the same contact twice in the document</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="organigram" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="architects" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="architect" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="contactUID"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="integrators" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="integrator" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="contactUID"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="collaborativeEngineers" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="collaborativeEngineer" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="contactUID"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="toolSpecialists" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="toolSpecialist" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="contactUID"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="customers" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="customer" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="contactUID" type="xs:string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="projectSpecific" type="xs:anyType" minOccurs="0"/> + </xs:all> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="executableBlocks"> + <xs:complexType> + <xs:all> + <xs:element name="designCompetences" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="designCompetence" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="label" type="xs:string"> + <xs:annotation> + <xs:documentation>Label of the design competence which can be used for clean printouts (e.g. 'F')</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="instanceID" type="xs:string"/> + <xs:element name="inputs"> + <xs:complexType> + <xs:sequence> + <xs:element name="input" maxOccurs="unbounded"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="inoutType"> + <xs:sequence> + <xs:element name="validRanges" type="rangeType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="outputs" type="outputsType"/> + <xs:choice> + <xs:element name="relatedInstanceUID" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>Element used to refer to the first instance if a certain DC has instanceID>1. modeID, ID and metadata are not stored in this case.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:sequence> + <xs:element name="ID" type="xs:string"> + <xs:annotation> + <xs:documentation>Identifier of the tool to be executed</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="modeID" type="xs:string"> + <xs:annotation> + <xs:documentation>Identifier of the tool mode to be executed (as a tool can usually be executed in different modes)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="version" type="xs:string"/> + <xs:element name="metadata" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="generalInfo" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="description" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>Description of the design competence</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="status" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>Describing the state of the design competence, e.g. draft, final, for verification, ...</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="creationDate" type="xs:date" minOccurs="0"/> + <xs:element name="owner" type="contactType" minOccurs="0"> + <xs:annotation> + <xs:documentation>Owner(s) of the design competence</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="creator" type="contactType" minOccurs="0"> + <xs:annotation> + <xs:documentation>Creator(s) of the design competence</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="operator" type="contactType" minOccurs="0"> + <xs:annotation> + <xs:documentation>Operator(s) of the design competence to be contacted in case of problems</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="modelDefinition" minOccurs="0"> + <xs:annotation> + <xs:documentation>Optional element for 'surrogateModel' competence types</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:all> + <xs:element name="referenceDataSet" type="xs:string" minOccurs="0"/> + <xs:element name="analysisMethod" type="xs:string" minOccurs="0"/> + <xs:element name="fittingMethod" type="xs:string" minOccurs="0"/> + <xs:element name="relatedDesignCompetenceID" type="xs:string" minOccurs="0"/> + <xs:element name="relatedDesignCompetenceVersion" type="xs:string" minOccurs="0"/> + </xs:all> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element name="performanceInfo" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="precision" type="xs:decimal" minOccurs="0"/> + <xs:element name="fidelityLevel" type="xs:decimal" minOccurs="0"/> + <xs:element name="runTime" type="xs:decimal" minOccurs="0"/> + <xs:element name="standardDeviation" type="xs:decimal" minOccurs="0"/> + <xs:element name="verifications" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="verification" maxOccurs="unbounded"> + <xs:complexType> + <xs:all> + <xs:element name="method" type="xs:string"/> + <xs:element name="verifier" type="contactType"/> + <xs:element name="result" type="xs:string"/> + <xs:element name="date" type="xs:date"/> + <xs:element name="version" type="xs:string"/> + </xs:all> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element name="executionInfo" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="availabilityConstraints" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="fromDate" type="xs:date" minOccurs="0"/> + <xs:element name="toDate" type="xs:date" minOccurs="0"/> + <xs:element name="fromOfficeHour" type="xs:time" minOccurs="0"/> + <xs:element name="toOfficeHour" type="xs:time" minOccurs="0"/> + <xs:element name="maximumTotalExecutions" type="xs:int" minOccurs="0"/> + <xs:element name="maximumParallelExecutions" type="xs:int" minOccurs="0"/> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element name="authorizationConstraints" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="authorizedUsers" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="authorizedUser" type="contactType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="unauthorizedUsers" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="unauthorizedUser" type="contactType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element name="remoteComponentInfo" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="jobSettings" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="singleOrMultiExecution" minOccurs="0"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="single"/> + <xs:enumeration value="multiple"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="jobName" type="xs:string" minOccurs="0"/> + <xs:element name="remoteEngineer" type="contactType" minOccurs="0"/> + <xs:element name="notificationMessage" type="xs:string" minOccurs="0"/> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element name="dataExchangeSettings" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="dataserver" type="xs:string" minOccurs="0"/> + <xs:element name="urlsite" type="xs:string" minOccurs="0"/> + <xs:element name="webAuthenticationProtocol" type="xs:string" minOccurs="0"/> + <xs:element name="context" type="xs:string" minOccurs="0"/> + <xs:element name="folder" type="xs:string" minOccurs="0"/> + <xs:element name="pollingTime" type="xs:float" minOccurs="0"/> + <xs:element name="maxIterations" type="xs:int" minOccurs="0"/> + <xs:element name="timeOut" type="xs:float" minOccurs="0"/> + <xs:element name="sharedFilePolicy" type="xs:string" minOccurs="0"/> + <xs:element name="servermutex" type="xs:string" minOccurs="0"/> + </xs:all> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="projectSpecific" type="xs:anyType" minOccurs="0"> + <xs:annotation> + <xs:documentation>Free element containing any project specific information (e.g. for RCE or Optimus).</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:choice> + </xs:sequence> + <xs:attribute name="uID" type="xs:string" use="required"> + <xs:annotation> + <xs:documentation>Unique ID of the design competence which can be used as reference in the problem definition etc. By convention this identifier should be of the following form ID[modeID][instanceID][version]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="mathematicalFunctions" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="mathematicalFunction" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="label" type="xs:string"> + <xs:annotation> + <xs:documentation>Name of the function which can be used for clean printouts (e.g. 'G')</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="functionType"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="regular"/> + <xs:enumeration value="consistency"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="inputs"> + <xs:complexType> + <xs:sequence> + <xs:element name="input" maxOccurs="unbounded"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="inoutType"> + <xs:sequence> + <xs:element name="equationLabel" minOccurs="0"> + <xs:simpleType> + <xs:list itemType="xs:string"/> + </xs:simpleType> + </xs:element> + <xs:element name="validRanges" type="rangeType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="outputs"> + <xs:complexType> + <xs:sequence> + <xs:element name="output" maxOccurs="unbounded"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="inoutType"> + <xs:sequence> + <xs:choice> + <xs:element name="equations" type="equationsType"> + <xs:annotation> + <xs:documentation>A mathematical function output can be defined by mulitple equivalent equations in different languages</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="equationsUID" type="xs:string"> + <xs:annotation> + <xs:documentation>A mathematical function output can also be defined by a reference to another group of equivalent equations in different languages</xs:documentation> + </xs:annotation> + </xs:element> + </xs:choice> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="uID" type="xs:string" use="required"> + <xs:annotation> + <xs:documentation>Unique ID of the function which can be used as reference in the problem definition etc. (e.g. 'G')</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element name="parameters"> + <xs:complexType> + <xs:sequence> + <xs:element name="parameter" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="label" type="xs:string"> + <xs:annotation> + <xs:documentation>Label of the parameter which can be used for clean printouts (e.g. 'y1')</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="instanceID" type="xs:int"> + <xs:annotation> + <xs:documentation>The instance of the parameter determines way in which it is referenced and what information is saved.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="schemaPath" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>The path of the parameter which is only saved when instanceID is 1.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:choice> + <xs:element name="relatedInstanceUID" type="xs:string"> + <xs:annotation> + <xs:documentation>In case instanceID is higher than 1 the parameter is only referenced to the first instance of the parameter.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:sequence> + <xs:element name="description" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>Detailed description of the parameter</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="note" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>Any additional note for the parameter</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="unit" type="xs:string" minOccurs="0"/> + <xs:element name="dataType" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:choice> + </xs:sequence> + <xs:attribute name="uID" type="xs:string" use="required"> + <xs:annotation> + <xs:documentation>Unique ID of the parameter which can be used as reference in the problem definition etc. (e.g. '/data_schema/analyses/y1')</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="problemDefinition" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="problemFormulation"> + <xs:complexType> + <xs:all> + <xs:element name="mdaoArchitecture" type="xs:string"/> + <xs:element name="convergerType" type="xs:string" minOccurs="0"/> + <xs:element name="executableBlocksOrder" type="executableBlocksType"/> + <xs:element name="allowUnconvergedCouplings" type="xs:boolean"/> + <xs:element name="doeSettings" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="doeMethod" type="xs:string"/> + <xs:element name="doeSeed" type="xs:decimal" minOccurs="0"/> + <xs:element name="doeRuns" type="xs:int" minOccurs="0"/> + </xs:all> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element name="problemRoles"> + <xs:complexType> + <xs:sequence> + <xs:element name="parameters"> + <xs:complexType> + <xs:sequence> + <xs:element name="designVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="designVariable" maxOccurs="unbounded"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="simpleVariableType"> + <xs:sequence> + <xs:element name="nominalValue" type="xs:decimal" minOccurs="0"/> + <xs:element name="validRanges" type="rangeType" minOccurs="0"/> + <xs:element name="variableType" minOccurs="0"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="int"/> + <xs:enumeration value="real"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="samples" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="sample" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:decimal"> + <xs:attribute name="position" type="xs:string"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="objectiveVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="objectiveVariable" type="simpleVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="constraintVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="constraintVariable" maxOccurs="unbounded"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="simpleVariableType"> + <xs:sequence> + <xs:element name="constraintType" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>Either 'inequality' or 'equality'</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="constraintOperator" minOccurs="0"> + <xs:annotation> + <xs:documentation>Either '==', 'lt', 'gt', 'lt=', 'gt=' or combination of inequality constraints</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="referenceValue" type="xs:anyType" minOccurs="0"/> + <xs:element name="requiredEqualityPrecision" type="xs:decimal" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="stateVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="stateVariable" type="simpleVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="executableBlocks"> + <xs:complexType> + <xs:all> + <xs:element name="preCouplingBlocks" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="preCouplingBlock" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="coupledBlocks" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="coupledBlock" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="postCouplingBlocks" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="postCouplingBlock" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="preDesvarsBlocks" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="preDesvarsBlock" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="postDesvarsBlocks" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="postDesvarBlock" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"/> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:all> + <xs:attribute name="uID" type="xs:string" use="required"/> + </xs:complexType> + </xs:element> + <xs:element name="workflow" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="problemDefinitionUID" type="xs:string" minOccurs="0"/> + <xs:element name="dataGraph"> + <xs:complexType> + <xs:sequence> + <xs:element name="name" type="xs:string"/> + <xs:element name="edges"> + <xs:complexType> + <xs:sequence> + <xs:element name="edge" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:choice> + <xs:element name="fromParameterUID" type="xs:string"/> + <xs:element name="fromExecutableBlockUID" type="xs:string"/> + </xs:choice> + <xs:choice> + <xs:element name="toParameterUID"/> + <xs:element name="toExecutableBlockUID"/> + </xs:choice> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="metadata" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="processGraph" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="name" type="xs:string"/> + <xs:element name="edges"> + <xs:complexType> + <xs:sequence> + <xs:element name="edge" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="fromExecutableBlockUID" type="xs:string"/> + <xs:element name="toExecutableBlockUID" type="xs:string"/> + <xs:element name="processStepNumber" type="xs:int"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="nodes"> + <xs:complexType> + <xs:sequence> + <xs:element name="node" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="referenceUID" type="xs:string"/> + <xs:element name="processStepNumber" type="xs:int"/> + <xs:element name="convergerStepNumber" type="xs:int" minOccurs="0"/> + <xs:element name="diagonalPosition" type="xs:int"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="metadata" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="loopNesting" type="loopElementType" minOccurs="0"/> + <xs:element name="executableBlocksOrder" type="executableBlocksType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="architectureElements" minOccurs="0"> + <xs:complexType> + <xs:all> + <xs:element name="parameters"> + <xs:complexType> + <xs:all> + <xs:element name="initialGuessCouplingVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="initialGuessCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="finalCouplingVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="finalCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="couplingCopyVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="couplingCopyVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="initialGuessDesignVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="initialGuessDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="finalDesignVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="finalDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="finalOutputVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="finalOutputVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="copyDesignVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="copyDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="consistencyConstraintVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="consistencyConstraintVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="doeInputSampleLists" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="doeInputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="doeOutputSampleLists" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="doeOutputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="surrogateModelApproximates" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="surrogateModelApproximate" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="couplingWeights" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="couplingWeight" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element name="executableBlocks"> + <xs:complexType> + <xs:all> + <xs:element name="coordinators" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="coordinator" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="optimizers" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="optimizer" maxOccurs="unbounded"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="optimizerType"> + <xs:sequence> + <xs:element name="designVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="designVariable" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="designVariableUID" type="xs:string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="objectiveVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="objectiveVariable" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="objectiveVariableUID" type="xs:string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="constraintVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="constraintVariable" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="constraintVariableUID" type="xs:string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="convergers" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="converger" type="convergerType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="does" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="doe" maxOccurs="unbounded"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="simplerArchitectureElementsBlockType"> + <xs:sequence> + <xs:element name="settings"> + <xs:complexType> + <xs:all> + <xs:element name="doeTable" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="tableRow" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="tableElement" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:decimal"> + <xs:attribute name="experimentID" type="xs:string"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="relatedParameterUID" type="xs:string"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="doeMethod" type="xs:string" minOccurs="0"/> + <xs:element name="doeRuns" type="xs:integer" minOccurs="0"/> + <xs:element name="doeSeed" type="xs:integer" minOccurs="0"/> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element name="designVariables" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="designVariable" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="designVariableUID" type="xs:string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="surrogateModels" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="surrogateModel" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="boundaryDeterminators" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="boundaryDeterminator" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="surrogateModelBuilders" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="surrogateModelBuilder" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="preCouplingAnalyses" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="preCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="preIteratorAnalyses" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="preIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="postIteratorAnalyses" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="postIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="coupledAnalyses" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="coupledAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="postCouplingAnalyses" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="postCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:complexType name="rangeType"> + <xs:sequence> + <xs:element name="limitRange" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Range defined by two limits</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:all> + <xs:element name="minimum" type="xs:float"/> + <xs:element name="maximum" type="xs:float"/> + </xs:all> + </xs:complexType> + </xs:element> + <xs:element name="listRange" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Range defined by a list of items</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="listRangeItem" type="xs:string" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="inoutType"> + <xs:sequence> + <xs:element name="parameterUID" type="xs:string"> + <xs:annotation> + <xs:documentation>ID of the parameter which serves as input or output (e.g. '/data_schema/analyses/y2')</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="equationsType"> + <xs:sequence> + <xs:element name="equation" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="language" type="xs:string"> + <xs:annotation> + <xs:documentation>The language in which the equation is formulated (e.g. Python or MathML)</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="uID" type="xs:string"/> + </xs:complexType> + <xs:complexType name="outputsType"> + <xs:sequence> + <xs:element name="output" type="inoutType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="contactType"> + <xs:choice> + <xs:element name="contact"> + <xs:complexType> + <xs:all> + <xs:element name="name" type="xs:string"> + <xs:annotation> + <xs:documentation>Name of the contact person</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="email" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>E-Mail address of the contact person</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="company" minOccurs="0"/> + <xs:element name="department" minOccurs="0"/> + <xs:element name="function" type="xs:string" minOccurs="0"/> + <xs:element name="address" type="xs:string" minOccurs="0"/> + <xs:element name="telephone" type="xs:string" minOccurs="0"/> + <xs:element name="country" type="xs:string" minOccurs="0"/> + </xs:all> + <xs:attribute name="uID" type="xs:string" use="optional"> + <xs:annotation> + <xs:documentation>Unique ID of the contact which can be used as reference in order to avoid having the same contact twice in the document</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="contactUID" type="xs:string"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="loopElementType"> + <xs:sequence> + <xs:element name="loopElements" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="loopElement" type="loopElementType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="functionElements" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="functionElement" type="xs:string" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="relatedUID" type="xs:string"/> + </xs:complexType> + <xs:complexType name="simpleVariableType"> + <xs:sequence> + <xs:element name="parameterUID" type="xs:string"/> + </xs:sequence> + <xs:attribute name="uID" type="xs:string" use="required"/> + </xs:complexType> + <xs:complexType name="simpleArchitectureElementsVariableType"> + <xs:sequence> + <xs:choice> + <xs:element name="relatedParameterUID" type="xs:string"/> + <xs:element name="relatedInstanceUID" type="xs:string"/> + </xs:choice> + <xs:element name="label" type="xs:string"/> + <xs:element name="instanceID" type="xs:int"/> + <xs:element name="schemaPath" type="xs:string" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="uID" type="xs:string"/> + </xs:complexType> + <xs:complexType name="convergerType"> + <xs:sequence> + <xs:element name="label" type="xs:string" minOccurs="0"/> + <xs:element name="settings" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="linearSolver" type="solverSettingsType"/> + <xs:element name="nonlinearSolver" type="solverSettingsType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="uID" type="xs:string"/> + </xs:complexType> + <xs:complexType name="solverSettingsType"> + <xs:sequence> + <xs:element name="method" type="xs:string"/> + <xs:element name="lastIterationsToConsider" type="xs:int"/> + <xs:element name="maximumIterations" type="xs:int"/> + <xs:element name="convergenceToleranceRelative" type="xs:float"/> + <xs:element name="convergenceToleranceAbsolute" type="xs:float"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="optimizerType"> + <xs:sequence> + <xs:element name="label" type="xs:string" minOccurs="0"/> + <xs:element name="settings" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="maximumIterations" type="xs:float"/> + <xs:element name="algorithm" type="xs:string"/> + <xs:element name="applyScaling" type="xs:boolean"/> + <xs:element name="maximumFunctionEvaluations" type="xs:float"/> + <xs:element name="constraintTolerance" type="xs:float"/> + <xs:element name="convergenceTolerance" type="xs:float"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="uID" type="xs:string"/> + </xs:complexType> + <xs:complexType name="simpleArchitectureElementsBlockType"> + <xs:sequence> + <xs:element name="label" type="xs:string"/> + <xs:element name="settings" type="xs:string" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="uID" type="xs:string"/> + </xs:complexType> + <xs:complexType name="simplerArchitectureElementsBlockType"> + <xs:sequence> + <xs:element name="label" type="xs:string"/> + </xs:sequence> + <xs:attribute name="uID" type="xs:string"/> + </xs:complexType> + <xs:complexType name="simpleArchitectureElementsRelatedBlockType"> + <xs:sequence> + <xs:element name="relatedExecutableBlockUID" type="xs:string"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="executableBlocksType"> + <xs:sequence> + <xs:element name="executableBlock" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="position" type="xs:int"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> +</xs:schema> diff --git a/kadmos/graph/graph_data.py b/kadmos/graph/graph_data.py index 1a4cb324d..d4f10ff73 100644 --- a/kadmos/graph/graph_data.py +++ b/kadmos/graph/graph_data.py @@ -9,6 +9,8 @@ import re import random import operator as oper +from collections import OrderedDict + import networkx as nx import matplotlib.pyplot as plt import numpy as np @@ -4298,7 +4300,7 @@ class FundamentalProblemGraph(DataGraph, KeChainMixin): sys_opt, sys_opt_label = graph.OPTIMIZER_STRING, graph.OPTIMIZER_LABEL # Connect optimizer as a converger using the consistency constraint function mdg.connect_converger(sys_opt, graph.OPTIONS_ARCHITECTURES[2], coup_functions, True, - label=sys_opt_label, converger_is_optimizer=True) + label=sys_opt_label, conv_is_optimizer=True) # Connect optimizer w.r.t. design variables, objective, constraints # noinspection PyUnboundLocalVariable mdg.connect_optimizer(sys_opt, des_var_nodes, objective_node, constraint_nodes, label=sys_opt_label) @@ -4858,10 +4860,13 @@ class MdaoDataGraph(DataGraph, MdaoMixin): if 'settings' not in self.nodes[cmdows_uid] or self.nodes[cmdows_uid]['settings'] is None: self.nodes[cmdows_uid]['settings'] = {} if role == 'converger': - setting_options = {'last_iterations_to_consider': 'lastIterationsToConsider', - 'maximum_iterations': 'maximumIterations', - 'convergence_tolerance_relative': 'convergenceToleranceRelative', - 'convergence_tolerance_absolute': 'convergenceToleranceAbsolute'} + setting_options = {'linear_solver': 'linearSolver', + 'nonlinear_solver': 'nonlinearSolver'} + solver_settings_options = {'method': 'method', + 'last_iterations_to_consider': 'lastIterationsToConsider', + 'maximum_iterations': 'maximumIterations', + 'convergence_tolerance_relative': 'convergenceToleranceRelative', + 'convergence_tolerance_absolute': 'convergenceToleranceAbsolute'} else: setting_options = {'maximum_iterations': 'maximumIterations', 'algorithm': 'algorithm', @@ -4877,9 +4882,15 @@ class MdaoDataGraph(DataGraph, MdaoMixin): setting_options [setting_option])] else: - self.nodes[cmdows_uid]['settings'][setting_option] = \ - cmdows_single_architecture_exe_block.findtext('settings/' + - setting_options[setting_option]) + if role == 'optimizer': + self.nodes[cmdows_uid]['settings'][setting_option] = \ + cmdows_single_architecture_exe_block.findtext('settings/' + + setting_options[setting_option]) + elif role == 'converger': + self.nodes[cmdows_uid]['settings'][setting_option] = \ + OrderedDict((((key, cmdows_single_architecture_exe_block.findtext('settings/' + + setting_options[setting_option] + '/' + solver_settings_options[key])) for + key in solver_settings_options))) if role == 'optimizer': cmdows_des_vars = \ cmdows_single_architecture_exe_block.findall('objectiveVariables/objectiveVariable') @@ -4982,18 +4993,6 @@ class MdaoDataGraph(DataGraph, MdaoMixin): for func in functions: self.nodes[func]['architecture_role'] = self.ARCHITECTURE_ROLES_FUNS[6] - # Converger required - if mdao_arch == self.OPTIONS_ARCHITECTURES[6]: # con-DOE - # Add converger - assert not self.has_node(self.CONVERGER_STRING), 'Converger name already in use in FPG.' - self.add_node(self.CONVERGER_STRING, - category='function', - architecture_role=self.ARCHITECTURE_ROLES_FUNS[2], - shape='8', - label=self.CONVERGER_LABEL, - settings={'convergence_tolerance_absolute': 1e-6, 'convergence_tolerance_relative': 1e-6, - 'last_iterations_to_consider': 1, 'maximum_iterations': 100}) - # Add architecture role to coupled functions for func in mg_function_ordering[self.FUNCTION_ROLES[1]]: self.nodes[func]['architecture_role'] = self.ARCHITECTURE_ROLES_FUNS[7] @@ -5463,7 +5462,7 @@ class MdaoDataGraph(DataGraph, MdaoMixin): return conv_check_node def connect_converger(self, converger, conv_type, coupling_functions, include_couplings_as_final_output, - system_converger=False, label='CONV', converger_is_optimizer=False): + system_converger=False, label='CONV', conv_is_optimizer=False): """Method to automatically connect a converger around a collection of coupled functions. :param converger: name of the converger to be connected @@ -5485,18 +5484,27 @@ class MdaoDataGraph(DataGraph, MdaoMixin): if not self.has_node(converger): self.add_node(converger, category='function', - architecture_role=self.ARCHITECTURE_ROLES_FUNS[1] if converger_is_optimizer else + architecture_role=self.ARCHITECTURE_ROLES_FUNS[1] if conv_is_optimizer else self.ARCHITECTURE_ROLES_FUNS[2], label=label, instance=1, - settings={'convergence_tolerance_absolute': 1e-6, 'convergence_tolerance_relative': 1e-6, - 'last_iterations_to_consider': 1, 'maximum_iterations': 100} if not - converger_is_optimizer else {'algorithm': 'Dakota Quasi-Newton method', - 'maximum_iterations': 1000, - 'maximum_function_evaluations': 1000, - 'constraint_tolerance': 1e-4, - 'convergence_tolerance': 1e-4, - 'apply_scaling': True}) + settings=OrderedDict((('linear_solver', OrderedDict((('method', conv_type), + ('last_iterations_to_consider', 1), + ('maximum_iterations', 100), + ('convergence_tolerance_relative', 1e-6), + ('convergence_tolerance_absolute', 1e-6)))), + ('nonlinear_solver', OrderedDict((('method', conv_type), + ('last_iterations_to_consider', 1), + ('maximum_iterations', 100), + ('convergence_tolerance_relative', 1e-6), + ('convergence_tolerance_absolute', 1e-6))) + ))) if not conv_is_optimizer else + {'algorithm': 'Dakota Quasi-Newton method', + 'maximum_iterations': 1000, + 'maximum_function_evaluations': 1000, + 'constraint_tolerance': 1e-4, + 'convergence_tolerance': 1e-4, + 'apply_scaling': True}) assert conv_type in self.OPTIONS_CONVERGERS + [self.OPTIONS_ARCHITECTURES[2]], \ 'Invalid converger type %s specified.' % conv_type assert isinstance(coupling_functions, list) @@ -5924,7 +5932,7 @@ class MdaoDataGraph(DataGraph, MdaoMixin): nodes = sub_func_orderings[partition]['coupled'] # Connect nodes to (sub)system converger or system optimizer self.connect_converger(conv, conv_type, nodes, True, label=conv_label, - converger_is_optimizer=converger_is_optimizer) + conv_is_optimizer=converger_is_optimizer) # Connect remaining couplings to the system converger or optimizer if mdao_arch == self.OPTIONS_ARCHITECTURES[2]: @@ -5933,7 +5941,7 @@ class MdaoDataGraph(DataGraph, MdaoMixin): conv, conv_label, conv_type = sys_conv, sys_conv_label, self.OPTIONS_CONVERGERS[0] converger_is_optimizer = True if conv == sys_opt else False self.connect_converger(conv, conv_type, coup_functions, True, system_converger=True, label=conv_label, - converger_is_optimizer=converger_is_optimizer) + conv_is_optimizer=converger_is_optimizer) # Resolve problematic variables prob_var = self.find_all_nodes(subcategory='all splittable variables') diff --git a/kadmos/graph/graph_kadmos.py b/kadmos/graph/graph_kadmos.py index 1b786868d..ec058d3ce 100644 --- a/kadmos/graph/graph_kadmos.py +++ b/kadmos/graph/graph_kadmos.py @@ -66,7 +66,7 @@ class KadmosGraph(nx.DiGraph, EquationMixin, VistomsMixin): 'Custom design table'] # 3 OPTIONS_CONVERGERS = ['Jacobi', 'Gauss-Seidel', None] FUNCTION_ROLES = ['pre-coupling', 'coupled', 'post-coupling', 'pre-desvars', 'post-desvars'] - CMDOWS_VERSION = '0.8' + CMDOWS_VERSION = '0.9' CMDOWS_ATTRIBUTES = ['nominal_value', 'valid_ranges', 'constraint_type', 'constraint_operator', 'reference_value', 'required_equality_precision', 'samples', 'variable_type'] CMDOWS_ATTRIBUTE_DICT = {i: j for i, j in zip(CMDOWS_ATTRIBUTES, [k for k in CMDOWS_ATTRIBUTES])} -- GitLab