﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:include schemaLocation="WTIGeometry.xsd" />

  <xs:simpleType name="DilatancyType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="MinusPhi" />
      <xs:enumeration value="Phi" />
      <xs:enumeration value="Zero" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ShearStrengthModelType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CPhi" />
      <xs:enumeration value="CuMeasured" />
      <xs:enumeration value="CuCalculated" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="SoilType">
    <xs:attribute name="Key" type="xs:int" use="required" />
    <xs:attribute name="Name" type="xs:string" use="required" />
    <xs:attribute name="AbovePhreaticLevel" type="xs:double" use="required" />
    <xs:attribute name="BelowPhreaticLevel" type="xs:double" use="required" />
    <xs:attribute name="DilatancyType" type="DilatancyType" use="required" />
    <xs:attribute name="Cohesion" type="xs:double" use="required" />
    <xs:attribute name="FrictionAngle" type="xs:double" use="required" />
    <xs:attribute name="UsePop" type="xs:boolean" use="required" />
    <xs:attribute name="POP" type="xs:double" use="required" />
    <xs:attribute name="RatioCuPc" type="xs:double" use="required" />
    <xs:attribute name="StrengthIncreaseExponent" type="xs:double" use="required" />
    <xs:attribute name="OCR" type="xs:double" use="required" />
    <xs:attribute name="ShearStrengthModel" type="ShearStrengthModelType" use="required" />
  </xs:complexType>

  <xs:complexType name="SoilModelType">
    <xs:sequence>
      <xs:element name="Soils">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="Soil" type="SoilType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SoilProfileType">
    <xs:sequence>
      <xs:element name="Geometry" type="GeometryType"/>
      <xs:element name="Surfaces">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="Surface">
              <xs:complexType>
                <xs:attribute name="Soil" type="xs:int" use="required" />
                <!--references Key of SoilType in SoilModel-->
                <xs:attribute name="Surface" type="xs:int" use="required" />
                <!--references Key of SurfaceType in Geometry-->
                <xs:attribute name="IsAquifer" type="xs:boolean" use="required" />
                <xs:attribute name="Key" type="xs:int" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="CharacteristicPointType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="DikeTopAtPolder" />
      <xs:enumeration value="DikeToeAtPolder" />
      <xs:enumeration value="DikeTopAtRiver" />
      <xs:enumeration value="DikeToeAtRiver" />
      <xs:enumeration value="TrafficLoadInside" />
      <xs:enumeration value="TrafficLoadOutside" />
      <xs:enumeration value="DitchDikeSide" />
      <xs:enumeration value="BottomDitchDikeSide" />
      <xs:enumeration value="DitchPolderSide" />
      <xs:enumeration value="BottomDitchPolderSide" />
      <xs:enumeration value="ShoulderBaseInside" />
      <xs:enumeration value="ShoulderTopInside" />
      <xs:enumeration value="ShoulderBaseOutside" />
      <xs:enumeration value="ShoulderTopOutside" />
      <xs:enumeration value="SurfaceLevelOutside" />
      <xs:enumeration value="SurfaceLevelInside" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="SurfaceLineType">
    <xs:sequence>
      <xs:element name="CharacteristicPoints">
        <xs:complexType>
          <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="CharacteristicPoint">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="GeometryPoint" type="PointType"/>
                </xs:sequence>
                <xs:attribute name="CharacteristicPointType" type="CharacteristicPointType" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ConsolidationValuesType">
    <xs:sequence>
      <xs:element name="ConsolidationLoad">
        <xs:complexType>
          <xs:attribute name="Key" type="xs:int" use="required" />
        </xs:complexType>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="ConsolidationValue">
        <xs:complexType>
          <xs:attribute name="Consolidator" type="xs:int" use="required" />
          <!--references Key of Surface in SoilProfileType or ConsolidationLoad-->
          <xs:attribute name="Consolidated" type="xs:int" use="required" />
          <!--references Key of Surface in SoilProfileType-->
          <xs:attribute name="Value" type="xs:double" use="required" />
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PreconsolidationStressType">
    <xs:sequence>
      <xs:element name="Point" type="PointType" />
    </xs:sequence>
    <xs:attribute name="StressValue" type="xs:double" use="required" />
  </xs:complexType>

  <xs:complexType name="PreconsolidationStressListType">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="PreconsolidationStress" type="PreconsolidationStressType"/>
    </xs:sequence>
    <xs:attribute name="PreconsolidationStressModelFactor" type="xs:double" use="required" />
  </xs:complexType>

</xs:schema>