@startuml

' left to right direction

skinparam shadowing false
skinparam monochrome true

class PyELMT{
    id
    type
}

class AbstractELMT{

}
PyELMT <|-- AbstractELMT

class PhysicalELMT{

    material: Material
}
PyELMT <|-- PhysicalELMT

class Document{

}

PyELMT <|-- Document

class Defect {
    location: PhysicalELMT
    condition: Int
    picture
}

PhysicalELMT -- Defect

Document <|-- Defect

class Crack {
}

class Loose {
}

Defect <|-- Crack
Defect <|-- Loose

@enduml

class FENode{
    x: Parameter
    y: Parameter
    z: Parameter
    tx: Parameter
    ty: Parameter
    tz: Parameter
    rx: Parameter
    ry: Parameter
    rz: Parameter
}
class Section{
    shape_node_list[]
}
class Material{
    type
    property_list[]: Parameter
}


AbstractELMT <|-- Section
AbstractELMT <|-- Material
AbstractELMT <|-- FENode


class Beam{
    fenode1: FENode
    fenode2: FENode
    section: Section
}
class Slab{
    fenode[]: FENode
    thickness: Parameter
}
class Volume{
    fenode[]: FENode
}
PhysicalELMT <|-- Beam
PhysicalELMT <|-- Slab
PhysicalELMT <|-- Volume