@startuml
'https://plantuml.com/class-diagram

class Element

'UPW
class UPwBaseElement

class UPwSmallStrainElement
class TransientPwElement
class SteadyStatePwElement
class UndrainedUPwSmallStrainElement
class UPwSmallStrainFICElement
class UPwUpdatedLagrangianFICElement
class UPwUpdatedLagrangianElement

class UPwSmallStrainInterfaceElement
class TransientPwInterfaceElement
class SteadyStatePwInterfaceElement
class UPwSmallStrainLinkInterfaceElement

Element <|-- UPwBaseElement
UPwBaseElement <|-- UPwSmallStrainElement

UPwSmallStrainElement <|-- TransientPwElement
TransientPwElement <|-- SteadyStatePwElement
UPwSmallStrainElement <|-- UndrainedUPwSmallStrainElement
UPwSmallStrainElement <|-- UPwSmallStrainFICElement
UPwSmallStrainFICElement <|-- UPwUpdatedLagrangianFICElement
UPwSmallStrainElement <|-- UPwUpdatedLagrangianElement

'
'
'Diff Order
class SmallStrainUPwDiffOrderElement
class UpdatedLagrangianUPwDiffOrderElement

UPwBaseElement <|-- SmallStrainUPwDiffOrderElement
SmallStrainUPwDiffOrderElement <|-- UpdatedLagrangianUPwDiffOrderElement

UPwBaseElement <|-- UPwSmallStrainInterfaceElement
UPwSmallStrainInterfaceElement <|-- TransientPwInterfaceElement
TransientPwInterfaceElement <|-- SteadyStatePwInterfaceElement
UPwSmallStrainInterfaceElement <|-- UPwSmallStrainLinkInterfaceElement

class InterfaceElement
Element <|-- InterfaceElement

'Pw Elements
class TransientPwLineElement
class GeoSteadyStatePwPipingElement

Element <|-- TransientPwLineElement
Element <|-- GeoSteadyStatePwPipingElement

''Thermal
class TransientThermalElement
Element <|-- TransientThermalElement
'
'
'Structural
class CrBeamElement2D2N_Structural
class CrBeamElementLinear2D2N_Structural
class GeoCrBeamElementLinear2D2N

Element <|-- CrBeamElement2D2N_Structural
CrBeamElement2D2N_Structural <|-- CrBeamElementLinear2D2N_Structural
CrBeamElementLinear2D2N_Structural <|-- GeoCrBeamElementLinear2D2N

@enduml
