diff --git a/GISASFW/GISASFW.pro b/GISASFW/GISASFW.pro new file mode 100644 index 0000000000000000000000000000000000000000..70ea91b6b8a7635d9a6db83789dd5fe20e65cbec --- /dev/null +++ b/GISASFW/GISASFW.pro @@ -0,0 +1,22 @@ +TEMPLATE = app +CONFIG += console +CONFIG -= qt + +SOURCES += main.cpp \ + nanoparticle.cpp \ + layer.cpp \ + homogeneousmaterial.cpp \ + multilayer.cpp \ + layerroughness.cpp \ + exceptions.cpp + +HEADERS += \ + isample.h \ + nanoparticle.h \ + layer.h \ + imaterial.h \ + homogeneousmaterial.h \ + multilayer.h \ + layerroughness.h \ + exceptions.h + diff --git a/GISASFW/exceptions.cpp b/GISASFW/exceptions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ca476d994541fa2ff672abb13f6f8e43df9f613e --- /dev/null +++ b/GISASFW/exceptions.cpp @@ -0,0 +1,11 @@ +#include "exceptions.h" + +NotImplementedException::NotImplementedException(const std::string& message) + : std::logic_error(message) +{ +} + +NullPointerException::NullPointerException(const std::string& message) + : std::logic_error(message) +{ +} diff --git a/GISASFW/exceptions.h b/GISASFW/exceptions.h new file mode 100644 index 0000000000000000000000000000000000000000..9196e5e0357d4bf202d76506c245b962b17905dd --- /dev/null +++ b/GISASFW/exceptions.h @@ -0,0 +1,17 @@ +#ifndef EXCEPTIONS_H +#define EXCEPTIONS_H + +#include <stdexcept> + +class NotImplementedException : public std::logic_error +{ +public: + NotImplementedException(const std::string& message); +}; + +class NullPointerException : public std::logic_error +{ +public: + NullPointerException(const std::string& message); +}; +#endif // EXCEPTIONS_H diff --git a/GISASFW/homogeneousmaterial.cpp b/GISASFW/homogeneousmaterial.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2e09ee83f3e21950c51ef903d895e00a36257718 --- /dev/null +++ b/GISASFW/homogeneousmaterial.cpp @@ -0,0 +1,6 @@ +#include "homogeneousmaterial.h" + +HomogeneousMaterial::HomogeneousMaterial(double refractive_index) + : m_refractive_index(refractive_index) +{ +} diff --git a/GISASFW/homogeneousmaterial.h b/GISASFW/homogeneousmaterial.h new file mode 100644 index 0000000000000000000000000000000000000000..6ceac2e18450d564089eef389e5dbd7b892f94de --- /dev/null +++ b/GISASFW/homogeneousmaterial.h @@ -0,0 +1,19 @@ +#ifndef HOMOGENEOUSMATERIAL_H +#define HOMOGENEOUSMATERIAL_H + +#include "imaterial.h" + +class HomogeneousMaterial : public IMaterial +{ +public: + HomogeneousMaterial(double refractive_index = 1); + virtual ~HomogeneousMaterial() {} + + double getRefractiveIndex() { return m_refractive_index; } + + +private: + double m_refractive_index; +}; + +#endif // HOMOGENEOUSMATERIAL_H diff --git a/GISASFW/imaterial.h b/GISASFW/imaterial.h new file mode 100644 index 0000000000000000000000000000000000000000..1c40c864cc5f39bcfd8b7a2b8103fd6b1991d8c7 --- /dev/null +++ b/GISASFW/imaterial.h @@ -0,0 +1,10 @@ +#ifndef IMATERIAL_H +#define IMATERIAL_H + +class IMaterial +{ +public: + virtual ~IMaterial() {} +}; + +#endif // IMATERIAL_H diff --git a/GISASFW/isample.h b/GISASFW/isample.h new file mode 100644 index 0000000000000000000000000000000000000000..4716c43387e824c391b679ac401e329cf12b206b --- /dev/null +++ b/GISASFW/isample.h @@ -0,0 +1,31 @@ +#ifndef ISAMPLE_H +#define ISAMPLE_H + +#include "exceptions.h" + +class ISample +{ +public: + virtual ~ISample() {} + + virtual void add(ISample* p_child); +// virtual void remove(ISample* p_child); +// virtual ISample* getChild(size_t index); +}; + +void ISample::add(ISample* p_child) +{ + throw NotImplementedException("This sample class is not allowed to have subsamples."); +} + +//void ISample::remove(ISample* p_child) +//{ +// throw NotImplementedException("This sample class is not allowed to have subsamples."); +//} + +//ISample *ISample::getChild(size_t index) +//{ +// throw NotImplementedException("This sample class is not allowed to have subsamples."); +//} + +#endif // ISAMPLE_H diff --git a/GISASFW/layer.cpp b/GISASFW/layer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2bcd5b7ee023b3d43809c52c921cc72a292e27e1 --- /dev/null +++ b/GISASFW/layer.cpp @@ -0,0 +1,20 @@ +#include "layer.h" +# include <stdexcept> + +Layer::Layer() +{ +} + +Layer::~Layer() +{ +} + +void Layer::setThickness(double thickness) +{ + if (thickness>=0.0) + { + m_thickness = thickness; + return; + } + throw new std::domain_error("Layer thickness cannot be negative"); +} diff --git a/GISASFW/layer.h b/GISASFW/layer.h new file mode 100644 index 0000000000000000000000000000000000000000..ddc1e074eee7e014733f0124cc9cdff1197f1407 --- /dev/null +++ b/GISASFW/layer.h @@ -0,0 +1,26 @@ +#ifndef LAYER_H +#define LAYER_H + +#include "isample.h" +#include "imaterial.h" + +class Layer : public ISample +{ +public: + Layer(); + virtual ~Layer(); + + virtual void setThickness(double thickness); + virtual const double getThickness() const { return m_thickness; } + virtual void setBulkMaterial(IMaterial* p_material) { mp_bulk_material = p_material; } + virtual IMaterial* getBulkMaterial() { return mp_bulk_material; } + +private: + IMaterial* mp_bulk_material; + double m_thickness; +// LayerRoughness* mp_top_roughness; +// LayerRoughness* mp_bottom_roughness; + +}; + +#endif // LAYER_H diff --git a/GISASFW/layerroughness.cpp b/GISASFW/layerroughness.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0f0a1fff6efda7d82036b5511c816f478059e07b --- /dev/null +++ b/GISASFW/layerroughness.cpp @@ -0,0 +1,5 @@ +#include "layerroughness.h" + +LayerRoughness *LayerRoughness::createSmoothLayerInterface(Layer *p_top_layer, Layer *p_bottom_layer) +{ +} diff --git a/GISASFW/layerroughness.h b/GISASFW/layerroughness.h new file mode 100644 index 0000000000000000000000000000000000000000..a8cac04e042d20daa197dda08891d480ae2dab84 --- /dev/null +++ b/GISASFW/layerroughness.h @@ -0,0 +1,15 @@ +#ifndef LAYERROUGHNESS_H +#define LAYERROUGHNESS_H + +#include "layer.h" + +class LayerRoughness +{ +public: + static LayerRoughness* createSmoothLayerInterface(Layer* p_top_layer, Layer* p_bottom_layer); + +protected: + LayerRoughness(); +}; + +#endif // LAYERROUGHNESS_H diff --git a/GISASFW/main.cpp b/GISASFW/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5f5419b5268aa6bb9df308d316981670e2c1c6e5 --- /dev/null +++ b/GISASFW/main.cpp @@ -0,0 +1,10 @@ +#include <iostream> + +using namespace std; + +int main() +{ + cout << "Hello World!" << endl; + return 0; +} + diff --git a/GISASFW/multilayer.cpp b/GISASFW/multilayer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..167796f68ebdbadb6fff389e4befecbb177e7876 --- /dev/null +++ b/GISASFW/multilayer.cpp @@ -0,0 +1,39 @@ +#include <algorithm> +#include <stdexcept> + +#include "multilayer.h" + +MultiLayer::MultiLayer() +{ +} + +MultiLayer::~MultiLayer() +{ +} + +void MultiLayer::addLayerWithTopRoughness(Layer *p_layer, LayerRoughness *p_roughness) +{ + if (!p_layer) + { + throw NullPointerException("The layer to add does not exist."); + } + if (getNumberOfLayers()) + { + Layer* p_last_layer = dynamic_cast<Layer*>(m_layers[getNumberOfLayers()-1]); + LayerRoughness* p_top_roughness = p_roughness; + if (!p_top_roughness) + { + p_top_roughness = LayerRoughness::createSmoothLayerInterface(p_last_layer, p_layer); + } + m_layers.push_back(p_layer); + m_roughnesses.push_back(p_top_roughness); + return; + } + m_layers.push_back(p_layer); +} + +void MultiLayer::add(ISample* p_child) +{ + Layer* p_layer = dynamic_cast<Layer*>(p_child); + addLayerWithTopRoughness(p_layer, 0); +} diff --git a/GISASFW/multilayer.h b/GISASFW/multilayer.h new file mode 100644 index 0000000000000000000000000000000000000000..4b41dcde6fe409eda6de5b7cadf488ec551513f2 --- /dev/null +++ b/GISASFW/multilayer.h @@ -0,0 +1,26 @@ +#ifndef MULTILAYER_H +#define MULTILAYER_H + +#include <vector> + +#include "layer.h" +#include "layerroughness.h" + +class MultiLayer : public ISample +{ +public: + MultiLayer(); + ~MultiLayer(); + + void addLayerWithTopRoughness(Layer* p_layer, LayerRoughness* p_roughness); + size_t getNumberOfLayers() { return m_layers.size(); } + + // Overrides from ISample: + void add(ISample* p_child); + +private: + std::vector<Layer*> m_layers; + std::vector<LayerRoughness*> m_roughnesses; +}; + +#endif // MULTILAYER_H diff --git a/GISASFW/nanoparticle.cpp b/GISASFW/nanoparticle.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a9ebda577fd62650d7eaae8b1470d8bc0b574f70 --- /dev/null +++ b/GISASFW/nanoparticle.cpp @@ -0,0 +1,9 @@ +#include "nanoparticle.h" + +NanoParticle::NanoParticle() +{ +} + +NanoParticle::~NanoParticle() +{ +} diff --git a/GISASFW/nanoparticle.h b/GISASFW/nanoparticle.h new file mode 100644 index 0000000000000000000000000000000000000000..cb16681b1943fab110055e8e6b46b2ed10e2e897 --- /dev/null +++ b/GISASFW/nanoparticle.h @@ -0,0 +1,14 @@ +#ifndef NANOPARTICLE_H +#define NANOPARTICLE_H + +#include "isample.h" + +class NanoParticle : public ISample +{ +public: + NanoParticle(); + virtual ~NanoParticle(); + +}; + +#endif // NANOPARTICLE_H diff --git a/UML/model.notation b/UML/model.notation index 055e40cebc8d0ec6df8f5b5851a155f3cca9e7da..eddc95f238f92fc3962013b2c42f2c7a1d0c2478 100644 --- a/UML/model.notation +++ b/UML/model.notation @@ -58,7 +58,7 @@ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XPQVmXyfEeGb2eulz0VMiA"/> </children> <element xmi:type="uml:Interface" href="model.uml#_XPLdEHyfEeGb2eulz0VMiA"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XPOgYXyfEeGb2eulz0VMiA" x="282" y="102" width="223" height="124"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XPOgYXyfEeGb2eulz0VMiA" x="180" y="63" width="223" height="124"/> </children> <children xmi:type="notation:Shape" xmi:id="_B4AdoHy_EeGw39HOdZIuIw" type="2008" fontName="Lucida Grande" fontHeight="11" fillColor="8905185" lineColor="0"> <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B4BEsny_EeGw39HOdZIuIw" source="displayNameLabelIcon"> @@ -160,42 +160,6 @@ <element xmi:type="uml:Class" href="model.uml#_sadhgHy_EeGw39HOdZIuIw"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sajoIXy_EeGw39HOdZIuIw" x="555" y="297"/> </children> - <children xmi:type="notation:Shape" xmi:id="_sX9KoHzAEeGw39HOdZIuIw" type="2008" fontName="Lucida Grande" fontHeight="11" fillColor="10011046" lineColor="0"> - <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sX9xsnzAEeGw39HOdZIuIw" source="displayNameLabelIcon"> - <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sX9xs3zAEeGw39HOdZIuIw" key="displayNameLabelIcon_value" value="false"/> - </eAnnotations> - <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7RNrpHzFEeGw39HOdZIuIw" source="ShadowFigure"> - <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7RNrpXzFEeGw39HOdZIuIw" key="ShadowFigure_Value" value="true"/> - </eAnnotations> - <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_btUKknzGEeGw39HOdZIuIw" source="QualifiedName"> - <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_btUKk3zGEeGw39HOdZIuIw" key="QualifiedNameDepth" value="1"/> - </eAnnotations> - <children xmi:type="notation:DecorationNode" xmi:id="_sX-YwXzAEeGw39HOdZIuIw" type="5029"/> - <children xmi:type="notation:BasicCompartment" xmi:id="_sX-YwnzAEeGw39HOdZIuIw" type="7017"> - <children xmi:type="notation:Shape" xmi:id="_OCW90HzDEeGw39HOdZIuIw" type="3012" fontName="Lucida Grande" fontHeight="11" lineColor="0"> - <element xmi:type="uml:Property" href="model.uml#_OCSFUHzDEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Location" xmi:id="_OCW90XzDEeGw39HOdZIuIw"/> - </children> - <styles xmi:type="notation:TitleStyle" xmi:id="_sX-Yw3zAEeGw39HOdZIuIw"/> - <styles xmi:type="notation:SortingStyle" xmi:id="_sX-YxHzAEeGw39HOdZIuIw"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_sX-YxXzAEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sX-YxnzAEeGw39HOdZIuIw"/> - </children> - <children xmi:type="notation:BasicCompartment" xmi:id="_sX-Yx3zAEeGw39HOdZIuIw" type="7018"> - <styles xmi:type="notation:TitleStyle" xmi:id="_sX-YyHzAEeGw39HOdZIuIw"/> - <styles xmi:type="notation:SortingStyle" xmi:id="_sX-YyXzAEeGw39HOdZIuIw"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_sX-YynzAEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sX-Yy3zAEeGw39HOdZIuIw"/> - </children> - <children xmi:type="notation:BasicCompartment" xmi:id="_sX-YzHzAEeGw39HOdZIuIw" visible="false" type="7019"> - <styles xmi:type="notation:TitleStyle" xmi:id="_sX-YzXzAEeGw39HOdZIuIw"/> - <styles xmi:type="notation:SortingStyle" xmi:id="_sX-YznzAEeGw39HOdZIuIw"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_sX-Yz3zAEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sX-Y0HzAEeGw39HOdZIuIw"/> - </children> - <element xmi:type="uml:Class" href="model.uml#_sX3EAHzAEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sX9KoXzAEeGw39HOdZIuIw" x="857" y="297"/> - </children> <children xmi:type="notation:Shape" xmi:id="_tpFbUHzAEeGw39HOdZIuIw" type="2008" fontName="Lucida Grande" fontHeight="11" fillColor="10011046" lineColor="0"> <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tpFbVHzAEeGw39HOdZIuIw" source="displayNameLabelIcon"> <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tpFbVXzAEeGw39HOdZIuIw" key="displayNameLabelIcon_value" value="false"/> @@ -214,6 +178,13 @@ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tpGCZ3zAEeGw39HOdZIuIw"/> </children> <children xmi:type="notation:BasicCompartment" xmi:id="_tpGCaHzAEeGw39HOdZIuIw" type="7018"> + <children xmi:type="notation:Shape" xmi:id="_UpXxMH2LEeGcxOnjc91t-Q" type="3013" fontName="Lucida Grande" fontHeight="11" lineColor="0"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MEQqoH2NEeGcxOnjc91t-Q" source="CustomAppearance_Annotation"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MEQqoX2NEeGcxOnjc91t-Q" key="CustomAppearance_MaskValue" value="2826"/> + </eAnnotations> + <element xmi:type="uml:Operation" href="model.uml#_UpPOUH2LEeGcxOnjc91t-Q"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_UpXxMX2LEeGcxOnjc91t-Q"/> + </children> <styles xmi:type="notation:TitleStyle" xmi:id="_tpGCaXzAEeGw39HOdZIuIw"/> <styles xmi:type="notation:SortingStyle" xmi:id="_tpGCanzAEeGw39HOdZIuIw"/> <styles xmi:type="notation:FilteringStyle" xmi:id="_tpGCa3zAEeGw39HOdZIuIw"/> @@ -226,39 +197,7 @@ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tpGCcXzAEeGw39HOdZIuIw"/> </children> <element xmi:type="uml:Class" href="model.uml#_to-toHzAEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tpFbUXzAEeGw39HOdZIuIw" x="857" y="108"/> - </children> - <children xmi:type="notation:Shape" xmi:id="_ps6rQHzBEeGw39HOdZIuIw" type="2008" fontName="Lucida Grande" fontHeight="11" fillColor="8905185" lineColor="0"> - <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ps6rRHzBEeGw39HOdZIuIw" source="displayNameLabelIcon"> - <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ps6rRXzBEeGw39HOdZIuIw" key="displayNameLabelIcon_value" value="false"/> - </eAnnotations> - <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ps7SUHzBEeGw39HOdZIuIw" source="QualifiedName"> - <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ps7SUXzBEeGw39HOdZIuIw" key="QualifiedNameDepth" value="1000"/> - </eAnnotations> - <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7RNroHzFEeGw39HOdZIuIw" source="ShadowFigure"> - <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7RNroXzFEeGw39HOdZIuIw" key="ShadowFigure_Value" value="true"/> - </eAnnotations> - <children xmi:type="notation:DecorationNode" xmi:id="_ps7SUnzBEeGw39HOdZIuIw" type="5029"/> - <children xmi:type="notation:BasicCompartment" xmi:id="_ps7SU3zBEeGw39HOdZIuIw" type="7017"> - <styles xmi:type="notation:TitleStyle" xmi:id="_ps7SVHzBEeGw39HOdZIuIw"/> - <styles xmi:type="notation:SortingStyle" xmi:id="_ps7SVXzBEeGw39HOdZIuIw"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_ps7SVnzBEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ps7SV3zBEeGw39HOdZIuIw"/> - </children> - <children xmi:type="notation:BasicCompartment" xmi:id="_ps7SWHzBEeGw39HOdZIuIw" type="7018"> - <styles xmi:type="notation:TitleStyle" xmi:id="_ps7SWXzBEeGw39HOdZIuIw"/> - <styles xmi:type="notation:SortingStyle" xmi:id="_ps7SWnzBEeGw39HOdZIuIw"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_ps7SW3zBEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ps7SXHzBEeGw39HOdZIuIw"/> - </children> - <children xmi:type="notation:BasicCompartment" xmi:id="_ps7SXXzBEeGw39HOdZIuIw" visible="false" type="7019"> - <styles xmi:type="notation:TitleStyle" xmi:id="_ps7SXnzBEeGw39HOdZIuIw"/> - <styles xmi:type="notation:SortingStyle" xmi:id="_ps7SX3zBEeGw39HOdZIuIw"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_ps7SYHzBEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ps7SYXzBEeGw39HOdZIuIw"/> - </children> - <element xmi:type="uml:Class" href="model.uml#_pszWgHzBEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ps6rQXzBEeGw39HOdZIuIw" x="555" y="450" width="139"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tpFbUXzAEeGw39HOdZIuIw" x="495" y="63"/> </children> <children xmi:type="notation:Shape" xmi:id="_vHIRMHzBEeGw39HOdZIuIw" type="2008" fontName="Lucida Grande" fontHeight="11" fillColor="10011046" lineColor="0"> <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vHI4QnzBEeGw39HOdZIuIw" source="displayNameLabelIcon"> @@ -278,6 +217,10 @@ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vHJfVXzBEeGw39HOdZIuIw"/> </children> <children xmi:type="notation:BasicCompartment" xmi:id="_vHJfVnzBEeGw39HOdZIuIw" type="7018"> + <children xmi:type="notation:Shape" xmi:id="_qBskMH2MEeGcxOnjc91t-Q" type="3013" fontName="Lucida Grande" fontHeight="11" lineColor="0"> + <element xmi:type="uml:Operation" href="model.uml#_qBmdkH2MEeGcxOnjc91t-Q"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_qBskMX2MEeGcxOnjc91t-Q"/> + </children> <styles xmi:type="notation:TitleStyle" xmi:id="_vHJfV3zBEeGw39HOdZIuIw"/> <styles xmi:type="notation:SortingStyle" xmi:id="_vHJfWHzBEeGw39HOdZIuIw"/> <styles xmi:type="notation:FilteringStyle" xmi:id="_vHJfWXzBEeGw39HOdZIuIw"/> @@ -290,7 +233,39 @@ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vHJfX3zBEeGw39HOdZIuIw"/> </children> <element xmi:type="uml:Class" href="model.uml#_vHBjgHzBEeGw39HOdZIuIw"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vHIRMXzBEeGw39HOdZIuIw" x="857" y="448" width="131"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vHIRMXzBEeGw39HOdZIuIw" x="819" y="432" width="190"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_eNEKcH2KEeGcxOnjc91t-Q" type="2004" fontName="Lucida Grande" fontHeight="11" fillColor="10011046" lineColor="0"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eNGmsH2KEeGcxOnjc91t-Q" source="displayNameLabelIcon"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eNGmsX2KEeGcxOnjc91t-Q" key="displayNameLabelIcon_value" value="false"/> + </eAnnotations> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eNGmsn2KEeGcxOnjc91t-Q" source="QualifiedName"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eNGms32KEeGcxOnjc91t-Q" key="QualifiedNameDepth" value="1000"/> + </eAnnotations> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wyvFEH2KEeGcxOnjc91t-Q" source="ShadowFigure"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wyvFEX2KEeGcxOnjc91t-Q" key="ShadowFigure_Value" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_eNGmtH2KEeGcxOnjc91t-Q" type="5011"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_eNGmtX2KEeGcxOnjc91t-Q" type="7006"> + <styles xmi:type="notation:TitleStyle" xmi:id="_eNGmtn2KEeGcxOnjc91t-Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_eNGmt32KEeGcxOnjc91t-Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_eNGmuH2KEeGcxOnjc91t-Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eNGmuX2KEeGcxOnjc91t-Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_eNGmun2KEeGcxOnjc91t-Q" type="7007"> + <styles xmi:type="notation:TitleStyle" xmi:id="_eNHNwH2KEeGcxOnjc91t-Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_eNHNwX2KEeGcxOnjc91t-Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_eNHNwn2KEeGcxOnjc91t-Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eNHNw32KEeGcxOnjc91t-Q"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_eNHNxH2KEeGcxOnjc91t-Q" visible="false" type="7008"> + <styles xmi:type="notation:TitleStyle" xmi:id="_eNHNxX2KEeGcxOnjc91t-Q"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_eNHNxn2KEeGcxOnjc91t-Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_eNHNx32KEeGcxOnjc91t-Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eNHNyH2KEeGcxOnjc91t-Q"/> + </children> + <element xmi:type="uml:Interface" href="model.uml#_eMp6wH2KEeGcxOnjc91t-Q"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eNEKcX2KEeGcxOnjc91t-Q" x="819" y="297" width="127"/> </children> <styles xmi:type="notation:DiagramStyle" xmi:id="_xN4QMXyeEeGb2eulz0VMiA"/> <element xmi:type="uml:Model" href="model.uml#_xLNWsHyeEeGb2eulz0VMiA"/> @@ -300,7 +275,7 @@ </children> <styles xmi:type="notation:FontStyle" xmi:id="_eUjWwXy_EeGw39HOdZIuIw" fontName="Lucida Grande" fontHeight="11"/> <element xmi:type="uml:Generalization" href="model.uml#_eTr0EHy_EeGw39HOdZIuIw"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eUjWwny_EeGw39HOdZIuIw" points="[-12, -9, -84, 105]$[-12, -45, -84, 69]$[135, -45, 63, 69]$[135, -80, 63, 34]"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eUjWwny_EeGw39HOdZIuIw" points="[-47, -9, -17, 144]$[-47, -72, -17, 81]$[45, -72, 75, 81]$[45, -119, 75, 34]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eV3lYHy_EeGw39HOdZIuIw" id="(0.72,0.09)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eV3lYXy_EeGw39HOdZIuIw" id="(0.18834080717488788,0.7258064516129032)"/> </edges> @@ -310,7 +285,7 @@ </children> <styles xmi:type="notation:FontStyle" xmi:id="_hilZAXy_EeGw39HOdZIuIw" fontName="Lucida Grande" fontHeight="11"/> <element xmi:type="uml:Generalization" href="model.uml#_hihuoHy_EeGw39HOdZIuIw"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hilZAny_EeGw39HOdZIuIw" points="[-5, -50, -6, 151]$[-5, -139, -6, 62]"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hilZAny_EeGw39HOdZIuIw" points="[-27, -50, 74, 172]$[-27, -113, 74, 109]$[-95, -113, 6, 109]$[-95, -160, 6, 62]"/> </edges> <edges xmi:type="notation:Connector" xmi:id="_wglpYHy_EeGw39HOdZIuIw" type="4002" source="_sajoIHy_EeGw39HOdZIuIw" target="_XPOgYHyfEeGb2eulz0VMiA" routing="Rectilinear" lineColor="0"> <children xmi:type="notation:DecorationNode" xmi:id="_wgmQcHy_EeGw39HOdZIuIw" type="6007"> @@ -318,7 +293,7 @@ </children> <styles xmi:type="notation:FontStyle" xmi:id="_wglpYXy_EeGw39HOdZIuIw" fontName="Lucida Grande" fontHeight="11"/> <element xmi:type="uml:Generalization" href="model.uml#_wggJ0Hy_EeGw39HOdZIuIw"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wglpYny_EeGw39HOdZIuIw" points="[-26, -50, 206, 133]$[-26, -86, 206, 97]$[-238, -86, -6, 97]$[-238, -121, -6, 62]"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wglpYny_EeGw39HOdZIuIw" points="[-60, -50, 274, 172]$[-60, -113, 274, 109]$[-328, -113, 6, 109]$[-328, -160, 6, 62]"/> </edges> <edges xmi:type="notation:Connector" xmi:id="_9TBaEHy_EeGw39HOdZIuIw" type="4001" source="_fotGQHy_EeGw39HOdZIuIw" target="_sajoIHy_EeGw39HOdZIuIw" routing="Rectilinear" lineColor="0"> <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IFyZEHzAEeGw39HOdZIuIw" source="QualifiedName"> @@ -360,7 +335,7 @@ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9TCBIXy_EeGw39HOdZIuIw" points="[17, 3, -148, -14]$[115, 3, -50, -14]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9T6x8Hy_EeGw39HOdZIuIw" id="(0.83,0.33)"/> </edges> - <edges xmi:type="notation:Connector" xmi:id="_IlQt4HzBEeGw39HOdZIuIw" type="4001" source="_sajoIHy_EeGw39HOdZIuIw" target="_tpFbUHzAEeGw39HOdZIuIw" routing="Rectilinear" lineColor="0"> + <edges xmi:type="notation:Connector" xmi:id="_IlQt4HzBEeGw39HOdZIuIw" type="4001" source="_tpFbUHzAEeGw39HOdZIuIw" target="_sajoIHy_EeGw39HOdZIuIw" routing="Rectilinear" lineColor="0"> <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JXElUHzBEeGw39HOdZIuIw" source="Stereotype_Annotation"> <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JX0MMHzBEeGw39HOdZIuIw" key="StereotypeWithQualifiedNameList" value=""/> <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JX0zQHzBEeGw39HOdZIuIw" key="StereotypeList" value=""/> @@ -372,7 +347,7 @@ <layoutConstraint xmi:type="notation:Location" xmi:id="_IlRU8XzBEeGw39HOdZIuIw" y="-20"/> </children> <children xmi:type="notation:DecorationNode" xmi:id="_IlRU8nzBEeGw39HOdZIuIw" type="6002"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_IlRU83zBEeGw39HOdZIuIw" x="20" y="8"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_IlRU83zBEeGw39HOdZIuIw" x="-90" y="48"/> </children> <children xmi:type="notation:DecorationNode" xmi:id="_IlRU9HzBEeGw39HOdZIuIw" visible="false" type="6003"> <layoutConstraint xmi:type="notation:Location" xmi:id="_IlRU9XzBEeGw39HOdZIuIw" y="-20"/> @@ -381,22 +356,23 @@ <layoutConstraint xmi:type="notation:Location" xmi:id="_IlR8AHzBEeGw39HOdZIuIw" y="20"/> </children> <children xmi:type="notation:DecorationNode" xmi:id="_IlR8AXzBEeGw39HOdZIuIw" type="6033"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_IlR8AnzBEeGw39HOdZIuIw" x="-6" y="-16"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_IlR8AnzBEeGw39HOdZIuIw" x="-19" y="22"/> </children> <children xmi:type="notation:DecorationNode" xmi:id="_IlR8A3zBEeGw39HOdZIuIw" type="6034"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_IlR8BHzBEeGw39HOdZIuIw" x="13" y="-14"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_IlR8BHzBEeGw39HOdZIuIw" x="21" y="16"/> </children> <styles xmi:type="notation:FontStyle" xmi:id="_IlQt4XzBEeGw39HOdZIuIw" fontName="Lucida Grande" fontHeight="11"/> <element xmi:type="uml:Association" href="model.uml#_IlKnQHzBEeGw39HOdZIuIw"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IlQt4nzBEeGw39HOdZIuIw" points="[21, -26, -249, 157]$[74, -26, -196, 157]$[74, -150, -196, 33]$[220, -150, -50, 33]"/> - <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IlcUEHzBEeGw39HOdZIuIw" id="(0.79,0.44)"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IlQt4nzBEeGw39HOdZIuIw" points="[-62, 7, 75, -148]$[-62, 78, 75, -77]$[-149, 78, -12, -77]$[-149, 141, -12, -14]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IlcUEHzBEeGw39HOdZIuIw" id="(0.6806930693069307,0.93)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SJKfcH2lEeGcxOnjc91t-Q" id="(0.5571428571428572,0.14)"/> </edges> - <edges xmi:type="notation:Connector" xmi:id="_b9ZnQHzBEeGw39HOdZIuIw" type="4001" source="_sajoIHy_EeGw39HOdZIuIw" target="_sX9KoHzAEeGw39HOdZIuIw" routing="Rectilinear" lineColor="0"> + <edges xmi:type="notation:Connector" xmi:id="_b9ZnQHzBEeGw39HOdZIuIw" type="4001" source="_sajoIHy_EeGw39HOdZIuIw" target="_eNEKcH2KEeGcxOnjc91t-Q" routing="Rectilinear" lineColor="0"> <children xmi:type="notation:DecorationNode" xmi:id="_b9aOUHzBEeGw39HOdZIuIw" type="6001"> <layoutConstraint xmi:type="notation:Location" xmi:id="_b9aOUXzBEeGw39HOdZIuIw" y="-20"/> </children> <children xmi:type="notation:DecorationNode" xmi:id="_b9aOUnzBEeGw39HOdZIuIw" type="6002"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_b9aOU3zBEeGw39HOdZIuIw" x="-20" y="-12"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_b9aOU3zBEeGw39HOdZIuIw" x="-2" y="-12"/> </children> <children xmi:type="notation:DecorationNode" xmi:id="_b9a1YHzBEeGw39HOdZIuIw" visible="false" type="6003"> <layoutConstraint xmi:type="notation:Location" xmi:id="_b9a1YXzBEeGw39HOdZIuIw" y="-20"/> @@ -412,49 +388,41 @@ </children> <styles xmi:type="notation:FontStyle" xmi:id="_b9ZnQXzBEeGw39HOdZIuIw" fontName="Lucida Grande" fontHeight="11"/> <element xmi:type="uml:Association" href="model.uml#_b9UHsHzBEeGw39HOdZIuIw"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_b9ZnQnzBEeGw39HOdZIuIw" points="[24, -5, -216, 4]$[184, -5, -56, 4]"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_b9ZnQnzBEeGw39HOdZIuIw" points="[24, -14, -172, 0]$[184, -14, -12, 0]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b9j_UHzBEeGw39HOdZIuIw" id="(0.83,0.59)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kwjFkH2KEeGcxOnjc91t-Q" id="(0.12,0.45)"/> </edges> - <edges xmi:type="notation:Connector" xmi:id="_yO1pAHzBEeGw39HOdZIuIw" type="4002" source="_vHIRMHzBEeGw39HOdZIuIw" target="_sX9KoHzAEeGw39HOdZIuIw" routing="Rectilinear" lineColor="0"> + <edges xmi:type="notation:Connector" xmi:id="_yO1pAHzBEeGw39HOdZIuIw" type="4002" source="_vHIRMHzBEeGw39HOdZIuIw" target="_eNEKcH2KEeGcxOnjc91t-Q" routing="Rectilinear" lineColor="0"> <children xmi:type="notation:DecorationNode" xmi:id="_yO2QEnzBEeGw39HOdZIuIw" type="6007"> <layoutConstraint xmi:type="notation:Location" xmi:id="_yO23IHzBEeGw39HOdZIuIw" y="40"/> </children> <styles xmi:type="notation:FontStyle" xmi:id="_yO2QEHzBEeGw39HOdZIuIw" fontName="Lucida Grande" fontHeight="11"/> <element xmi:type="uml:Generalization" href="model.uml#_yOx-oHzBEeGw39HOdZIuIw"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yO2QEXzBEeGw39HOdZIuIw" points="[-8, -50, 36, 165]$[-17, -165, 27, 50]"/> - </edges> - <edges xmi:type="notation:Connector" xmi:id="_yvXjMHzBEeGw39HOdZIuIw" type="4002" source="_ps6rQHzBEeGw39HOdZIuIw" target="_sajoIHy_EeGw39HOdZIuIw" routing="Rectilinear" lineColor="0"> - <children xmi:type="notation:DecorationNode" xmi:id="_yvYKQHzBEeGw39HOdZIuIw" type="6007"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_yvYKQXzBEeGw39HOdZIuIw" y="40"/> - </children> - <styles xmi:type="notation:FontStyle" xmi:id="_yvXjMXzBEeGw39HOdZIuIw" fontName="Lucida Grande" fontHeight="11"/> - <element xmi:type="uml:Generalization" href="model.uml#_yvT40HzBEeGw39HOdZIuIw"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yvXjMnzBEeGw39HOdZIuIw" points="[6, -50, -27, 63]$[6, -103, -27, 10]"/> - <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yvffAHzBEeGw39HOdZIuIw" id="(0.73,0.9)"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yO2QEXzBEeGw39HOdZIuIw" points="[-14, -50, 17, 39]$[-14, -85, 17, 4]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_j2ROoH2KEeGcxOnjc91t-Q" id="(0.51,0.96)"/> </edges> - <edges xmi:type="notation:Connector" xmi:id="_dM-jUHzCEeGw39HOdZIuIw" type="4001" source="_ps6rQHzBEeGw39HOdZIuIw" target="_vHIRMHzBEeGw39HOdZIuIw" routing="Rectilinear" lineColor="0"> - <children xmi:type="notation:DecorationNode" xmi:id="_dM_KYHzCEeGw39HOdZIuIw" type="6001"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_dM_KYXzCEeGw39HOdZIuIw" y="-20"/> + <edges xmi:type="notation:Connector" xmi:id="_sc7F8H2LEeGcxOnjc91t-Q" type="4001" source="_fotGQHy_EeGw39HOdZIuIw" target="_tpFbUHzAEeGw39HOdZIuIw" routing="Rectilinear" lineColor="0"> + <children xmi:type="notation:DecorationNode" xmi:id="_sc8UEH2LEeGcxOnjc91t-Q" type="6001"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_sc8UEX2LEeGcxOnjc91t-Q" y="-20"/> </children> - <children xmi:type="notation:DecorationNode" xmi:id="_dM_KYnzCEeGw39HOdZIuIw" type="6002"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_dM_KY3zCEeGw39HOdZIuIw" x="-21" y="-14"/> + <children xmi:type="notation:DecorationNode" xmi:id="_sc8UEn2LEeGcxOnjc91t-Q" type="6002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_sc8UE32LEeGcxOnjc91t-Q" x="-33" y="-12"/> </children> - <children xmi:type="notation:DecorationNode" xmi:id="_dM_KZHzCEeGw39HOdZIuIw" visible="false" type="6003"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_dM_xcHzCEeGw39HOdZIuIw" y="-20"/> + <children xmi:type="notation:DecorationNode" xmi:id="_sc8UFH2LEeGcxOnjc91t-Q" visible="false" type="6003"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_sc8UFX2LEeGcxOnjc91t-Q" y="-20"/> </children> - <children xmi:type="notation:DecorationNode" xmi:id="_dM_xcXzCEeGw39HOdZIuIw" visible="false" type="6005"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_dM_xcnzCEeGw39HOdZIuIw" y="20"/> + <children xmi:type="notation:DecorationNode" xmi:id="_sc8UFn2LEeGcxOnjc91t-Q" visible="false" type="6005"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_sc8UF32LEeGcxOnjc91t-Q" y="20"/> </children> - <children xmi:type="notation:DecorationNode" xmi:id="_dM_xc3zCEeGw39HOdZIuIw" type="6033"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_dM_xdHzCEeGw39HOdZIuIw" x="-6" y="13"/> + <children xmi:type="notation:DecorationNode" xmi:id="_sc8UGH2LEeGcxOnjc91t-Q" type="6033"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_sc8UGX2LEeGcxOnjc91t-Q" y="20"/> </children> - <children xmi:type="notation:DecorationNode" xmi:id="_dM_xdXzCEeGw39HOdZIuIw" type="6034"> - <layoutConstraint xmi:type="notation:Location" xmi:id="_dM_xdnzCEeGw39HOdZIuIw" y="-20"/> + <children xmi:type="notation:DecorationNode" xmi:id="_sc87IH2LEeGcxOnjc91t-Q" type="6034"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_sc87IX2LEeGcxOnjc91t-Q" x="31" y="-15"/> </children> - <styles xmi:type="notation:FontStyle" xmi:id="_dM-jUXzCEeGw39HOdZIuIw" fontName="Lucida Grande" fontHeight="11"/> - <element xmi:type="uml:Association" href="model.uml#_dM5DwnzCEeGw39HOdZIuIw"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dM-jUnzCEeGw39HOdZIuIw" points="[23, -2, -212, 16]$[216, -2, -19, 16]"/> - <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dNI7YHzCEeGw39HOdZIuIw" id="(0.7830188679245284,0.36)"/> - <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dNI7YXzCEeGw39HOdZIuIw" id="(0.1450381679389313,0.4)"/> + <styles xmi:type="notation:FontStyle" xmi:id="_sc7F8X2LEeGcxOnjc91t-Q" fontName="Lucida Grande" fontHeight="11"/> + <element xmi:type="uml:Association" href="model.uml#_scyjEH2LEeGcxOnjc91t-Q"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sc7F8n2LEeGcxOnjc91t-Q" points="[4, -50, -149, 150]$[4, -77, -149, 123]$[164, -77, 11, 123]$[164, -184, 11, 16]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sdK9kH2LEeGcxOnjc91t-Q" id="(0.10211267605633803,0.84)"/> </edges> </notation:Diagram> diff --git a/UML/model.uml b/UML/model.uml index 438ad8b1c90607d82f90c44b5b2f5dfacc903167..0c580508f0d1b9599af5b05f8a2426ddd9b2b899 100644 --- a/UML/model.uml +++ b/UML/model.uml @@ -32,14 +32,18 @@ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9S5eQXy_EeGw39HOdZIuIw" value="*"/> <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9S5eQny_EeGw39HOdZIuIw" value="1"/> </ownedAttribute> + <ownedAttribute xmi:id="_scxU8H2LEeGcxOnjc91t-Q" name="layerRoughness" type="_to-toHzAEeGw39HOdZIuIw" aggregation="composite" association="_scyjEH2LEeGcxOnjc91t-Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scxU8X2LEeGcxOnjc91t-Q" value="*"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scxU8n2LEeGcxOnjc91t-Q"/> + </ownedAttribute> </packagedElement> <packagedElement xmi:type="uml:Class" xmi:id="_sadhgHy_EeGw39HOdZIuIw" name="Layer"> <generalization xmi:id="_wggJ0Hy_EeGw39HOdZIuIw" general="_XPLdEHyfEeGb2eulz0VMiA"/> - <ownedAttribute xmi:id="_IlKAMHzBEeGw39HOdZIuIw" name="" type="_to-toHzAEeGw39HOdZIuIw" aggregation="shared" association="_IlKnQHzBEeGw39HOdZIuIw"> + <ownedAttribute xmi:id="_IlKAMHzBEeGw39HOdZIuIw" name="" type="_sadhgHy_EeGw39HOdZIuIw" aggregation="shared" association="_IlKnQHzBEeGw39HOdZIuIw"> <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IlKAMXzBEeGw39HOdZIuIw" value="2"/> - <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IlKAMnzBEeGw39HOdZIuIw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IlKAMnzBEeGw39HOdZIuIw" value="2"/> </ownedAttribute> - <ownedAttribute xmi:id="_b9TgoHzBEeGw39HOdZIuIw" name="material" type="_sX3EAHzAEeGw39HOdZIuIw" aggregation="shared" association="_b9UHsHzBEeGw39HOdZIuIw"> + <ownedAttribute xmi:id="_b9TgoHzBEeGw39HOdZIuIw" name="material" type="_eMp6wH2KEeGcxOnjc91t-Q" aggregation="shared" association="_b9UHsHzBEeGw39HOdZIuIw"> <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b9TgoXzBEeGw39HOdZIuIw" value="1"/> <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b9TgonzBEeGw39HOdZIuIw" value="1"/> </ownedAttribute> @@ -51,16 +55,22 @@ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9S7Tc3y_EeGw39HOdZIuIw" value="1"/> </ownedEnd> </packagedElement> - <packagedElement xmi:type="uml:Class" xmi:id="_sX3EAHzAEeGw39HOdZIuIw" name="Material"> + <packagedElement xmi:type="uml:Class" xmi:id="_sX3EAHzAEeGw39HOdZIuIw" name="IMaterial" isAbstract="true"> <ownedAttribute xmi:id="_OCSFUHzDEeGw39HOdZIuIw" name="m_name"> <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/> </ownedAttribute> </packagedElement> - <packagedElement xmi:type="uml:Class" xmi:id="_to-toHzAEeGw39HOdZIuIw" name="LayerRoughness"/> - <packagedElement xmi:type="uml:Association" xmi:id="_IlKnQHzBEeGw39HOdZIuIw" name="Top/bottom roughness" memberEnd="_IlKnQXzBEeGw39HOdZIuIw _IlKAMHzBEeGw39HOdZIuIw"> - <ownedEnd xmi:id="_IlKnQXzBEeGw39HOdZIuIw" name="" type="_sadhgHy_EeGw39HOdZIuIw" association="_IlKnQHzBEeGw39HOdZIuIw"> + <packagedElement xmi:type="uml:Class" xmi:id="_to-toHzAEeGw39HOdZIuIw" name="LayerRoughness"> + <ownedOperation xmi:id="_UpPOUH2LEeGcxOnjc91t-Q" name="createSmoothLayerInterface" isStatic="true"> + <ownedParameter xmi:id="_f4YAQH2LEeGcxOnjc91t-Q" name="top_layer" type="_sadhgHy_EeGw39HOdZIuIw"/> + <ownedParameter xmi:id="_iI3cMH2LEeGcxOnjc91t-Q" name="bottom_layer" type="_sadhgHy_EeGw39HOdZIuIw"/> + <ownedParameter xmi:id="_n2KWMH2LEeGcxOnjc91t-Q" name="smoothLayerInterface" type="_to-toHzAEeGw39HOdZIuIw" direction="return"/> + </ownedOperation> + </packagedElement> + <packagedElement xmi:type="uml:Association" xmi:id="_IlKnQHzBEeGw39HOdZIuIw" name="Top/bottom layer" memberEnd="_IlKnQXzBEeGw39HOdZIuIw _IlKAMHzBEeGw39HOdZIuIw"> + <ownedEnd xmi:id="_IlKnQXzBEeGw39HOdZIuIw" name="" type="_to-toHzAEeGw39HOdZIuIw" association="_IlKnQHzBEeGw39HOdZIuIw"> <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IlKnQnzBEeGw39HOdZIuIw" value="2"/> - <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IlKnQ3zBEeGw39HOdZIuIw" value="2"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IlKnQ3zBEeGw39HOdZIuIw" value="1"/> </ownedEnd> </packagedElement> <packagedElement xmi:type="uml:Association" xmi:id="_b9UHsHzBEeGw39HOdZIuIw" name="m_bulk_material" memberEnd="_b9UHsXzBEeGw39HOdZIuIw _b9TgoHzBEeGw39HOdZIuIw"> @@ -69,31 +79,18 @@ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b9UHs3zBEeGw39HOdZIuIw"/> </ownedEnd> </packagedElement> - <packagedElement xmi:type="uml:Class" xmi:id="_pszWgHzBEeGw39HOdZIuIw" name="HomogeneousLayer"> - <generalization xmi:id="_yvT40HzBEeGw39HOdZIuIw" general="_sadhgHy_EeGw39HOdZIuIw"/> - <ownedAttribute xmi:id="_acEh8HzCEeGw39HOdZIuIw" name="homogeneousMaterial" type="_vHBjgHzBEeGw39HOdZIuIw" association="_acFJAHzCEeGw39HOdZIuIw"> - <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_acEh8XzCEeGw39HOdZIuIw" value="1"/> - <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_acEh8nzCEeGw39HOdZIuIw" value="1"/> - </ownedAttribute> - <ownedAttribute xmi:id="_dM4csHzCEeGw39HOdZIuIw" name="homogeneousMaterial" type="_vHBjgHzBEeGw39HOdZIuIw" aggregation="shared" association="_dM5DwnzCEeGw39HOdZIuIw"> - <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dM5DwHzCEeGw39HOdZIuIw" value="1"/> - <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dM5DwXzCEeGw39HOdZIuIw" value="1"/> - </ownedAttribute> - </packagedElement> <packagedElement xmi:type="uml:Class" xmi:id="_vHBjgHzBEeGw39HOdZIuIw" name="HomogeneousMaterial"> - <generalization xmi:id="_yOx-oHzBEeGw39HOdZIuIw" general="_sX3EAHzAEeGw39HOdZIuIw"/> - </packagedElement> - <packagedElement xmi:type="uml:Association" xmi:id="_acFJAHzCEeGw39HOdZIuIw" name="homogeneousLayer_homogeneousMaterial_1" memberEnd="_acFJAXzCEeGw39HOdZIuIw _acEh8HzCEeGw39HOdZIuIw"> - <ownedEnd xmi:id="_acFJAXzCEeGw39HOdZIuIw" name="homogeneousLayer" type="_pszWgHzBEeGw39HOdZIuIw" association="_acFJAHzCEeGw39HOdZIuIw"> - <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_acFJAnzCEeGw39HOdZIuIw" value="1"/> - <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_acFJA3zCEeGw39HOdZIuIw" value="1"/> - </ownedEnd> + <generalization xmi:id="_yOx-oHzBEeGw39HOdZIuIw" general="_eMp6wH2KEeGcxOnjc91t-Q"/> + <ownedOperation xmi:id="_qBmdkH2MEeGcxOnjc91t-Q" name="getRefractiveIndex"> + <ownedParameter xmi:id="_vWDZwH2MEeGcxOnjc91t-Q" name="refractive_index" type="_cHz1kHzDEeGw39HOdZIuIw" direction="return"/> + </ownedOperation> </packagedElement> - <packagedElement xmi:type="uml:Association" xmi:id="_dM5DwnzCEeGw39HOdZIuIw" name="m_bulk_material" memberEnd="_dM5Dw3zCEeGw39HOdZIuIw _dM4csHzCEeGw39HOdZIuIw"> - <ownedEnd xmi:id="_dM5Dw3zCEeGw39HOdZIuIw" name="homogeneousLayer" type="_pszWgHzBEeGw39HOdZIuIw" association="_dM5DwnzCEeGw39HOdZIuIw"> - <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dM5DxHzCEeGw39HOdZIuIw" value="*"/> - <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dM5DxXzCEeGw39HOdZIuIw"/> + <packagedElement xmi:type="uml:DataType" xmi:id="_cHz1kHzDEeGw39HOdZIuIw" name="double"/> + <packagedElement xmi:type="uml:Interface" xmi:id="_eMp6wH2KEeGcxOnjc91t-Q" name="IMaterial"/> + <packagedElement xmi:type="uml:Association" xmi:id="_scyjEH2LEeGcxOnjc91t-Q" name="m_roughnesses" memberEnd="_scyjEX2LEeGcxOnjc91t-Q _scxU8H2LEeGcxOnjc91t-Q"> + <ownedEnd xmi:id="_scyjEX2LEeGcxOnjc91t-Q" name="multilayer" type="_fom_oHy_EeGw39HOdZIuIw" association="_scyjEH2LEeGcxOnjc91t-Q"> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_scyjEn2LEeGcxOnjc91t-Q" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scyjE32LEeGcxOnjc91t-Q" value="1"/> </ownedEnd> </packagedElement> - <packagedElement xmi:type="uml:DataType" xmi:id="_cHz1kHzDEeGw39HOdZIuIw" name="double"/> </uml:Model>