 
 
! This file is AUTOGENERATED!!!!
! Do not edit this file; edit m_wcml_quantity.m4 and regenerate.
!
!
module m_wcml_property

  use m_common_realtypes, only: sp, dp
  use FoX_wxml, only: xmlf_t
  use FoX_wxml, only: xml_NewElement, xml_AddAttribute
  use FoX_wxml, only: xml_EndElement
  use m_wcml_stml, only: stmAddValue

  implicit none
  private

  interface cmlAddproperty
     module procedure propertyCmplxDpSca
     module procedure propertyCmplxDpArrSi
     module procedure propertyCmplxDpArrSh
     module procedure propertyCmplxDpMatSi
     module procedure propertyCmplxDpMatSh
     module procedure propertyCmplxSpSca
     module procedure propertyCmplxSpArrSi
     module procedure propertyCmplxSpArrSh
     module procedure propertyCmplxSpMatSi
     module procedure propertyCmplxSpMatSh
     module procedure propertyRealDpSca
     module procedure propertyRealDpArrSi
     module procedure propertyRealDpArrSh
     module procedure propertyRealDpMatSi
     module procedure propertyRealDpMatSh
     module procedure propertyRealSpSca
     module procedure propertyRealSpArrSi
     module procedure propertyRealSpArrSh
     module procedure propertyRealSpMatSi
     module procedure propertyRealSpMatSh
     module procedure propertyIntSca
     module procedure propertyIntArrSi
     module procedure propertyIntArrSh
     module procedure propertyIntMatSi
     module procedure propertyIntMatSh
     module procedure propertyLgSca
     module procedure propertyLgArrSi
     module procedure propertyLgArrSh
     module procedure propertyLgMatSi
     module procedure propertyLgMatSh
     module procedure propertyChSca
     module procedure propertyChArrSi
     module procedure propertyChArrSh
     module procedure propertyChMatSi
     module procedure propertyChMatSh

  end interface cmlAddproperty

  public :: cmlAddproperty

contains

  subroutine propertyCmplxDpSca &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    complex(dp), intent(in)   :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyCmplxDpSca

  subroutine propertyCmplxSpSca &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    complex(sp), intent(in)   :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyCmplxSpSca

  subroutine propertyRealDpSca &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    real(dp), intent(in)   :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyRealDpSca

  subroutine propertyRealSpSca &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    real(sp), intent(in)   :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyRealSpSca

  subroutine propertyIntSca &
    (xf, value, dictRef, convention, title, id, ref, role, units)

    type(xmlf_t), intent(inout)              :: xf
    integer, intent(in)   :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyIntSca

  subroutine propertyLgSca &
    (xf, value, dictRef, convention, title, id, ref, role)

    type(xmlf_t), intent(inout)              :: xf
    logical, intent(in)   :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role


    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyLgSca

  subroutine propertyChSca &
    (xf, value, dictRef, convention, title, id, ref, role, units)

    type(xmlf_t), intent(inout)              :: xf
    character(len=*), intent(in)   :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in) , optional  :: units

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyChSca


  subroutine propertyCmplxDpArrSi &
    (xf, value,nitems,  dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    complex(dp), intent(in) , dimension(:)  :: value
    integer, intent(in) :: nitems
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nitems), units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyCmplxDpArrSi

  subroutine propertyCmplxSpArrSi &
    (xf, value,nitems,  dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    complex(sp), intent(in) , dimension(:)  :: value
    integer, intent(in) :: nitems
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nitems), units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyCmplxSpArrSi

  subroutine propertyRealDpArrSi &
    (xf, value,nitems,  dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    real(dp), intent(in) , dimension(:)  :: value
    integer, intent(in) :: nitems
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nitems), units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyRealDpArrSi

  subroutine propertyRealSpArrSi &
    (xf, value,nitems,  dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    real(sp), intent(in) , dimension(:)  :: value
    integer, intent(in) :: nitems
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nitems), units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyRealSpArrSi

  subroutine propertyIntArrSi &
    (xf, value,nitems,  dictRef, convention, title, id, ref, role, units)

    type(xmlf_t), intent(inout)              :: xf
    integer, intent(in) , dimension(:)  :: value
    integer, intent(in) :: nitems
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nitems), units=units)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyIntArrSi

  subroutine propertyLgArrSi &
    (xf, value,nitems,  dictRef, convention, title, id, ref, role)

    type(xmlf_t), intent(inout)              :: xf
    logical, intent(in) , dimension(:)  :: value
    integer, intent(in) :: nitems
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role


    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nitems))
    call xml_EndElement(xf, "property")
 
  end subroutine propertyLgArrSi

  subroutine propertyChArrSi &
    (xf, value,nitems,  dictRef, convention, title, id, ref, role, units)

    type(xmlf_t), intent(inout)              :: xf
    character(len=*), intent(in) , dimension(:)  :: value
    integer, intent(in) :: nitems
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in) , optional  :: units

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nitems), units=units)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyChArrSi


  subroutine propertyCmplxDpArrSh &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    complex(dp), intent(in) , dimension(:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyCmplxDpArrSh

  subroutine propertyCmplxSpArrSh &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    complex(sp), intent(in) , dimension(:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyCmplxSpArrSh

  subroutine propertyRealDpArrSh &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    real(dp), intent(in) , dimension(:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyRealDpArrSh

  subroutine propertyRealSpArrSh &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    real(sp), intent(in) , dimension(:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyRealSpArrSh

  subroutine propertyIntArrSh &
    (xf, value, dictRef, convention, title, id, ref, role, units)

    type(xmlf_t), intent(inout)              :: xf
    integer, intent(in) , dimension(:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyIntArrSh

  subroutine propertyLgArrSh &
    (xf, value, dictRef, convention, title, id, ref, role)

    type(xmlf_t), intent(inout)              :: xf
    logical, intent(in) , dimension(:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role


    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyLgArrSh

  subroutine propertyChArrSh &
    (xf, value, dictRef, convention, title, id, ref, role, units)

    type(xmlf_t), intent(inout)              :: xf
    character(len=*), intent(in) , dimension(:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in) , optional  :: units

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyChArrSh


  subroutine propertyCmplxDpMatSi &
    (xf, value,nrows, ncols,  dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    complex(dp), intent(in) , dimension(:,:)  :: value
    integer, intent(in) :: nrows
    integer, intent(in) :: ncols
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nrows, :ncols), units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyCmplxDpMatSi

  subroutine propertyCmplxSpMatSi &
    (xf, value,nrows, ncols,  dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    complex(sp), intent(in) , dimension(:,:)  :: value
    integer, intent(in) :: nrows
    integer, intent(in) :: ncols
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nrows, :ncols), units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyCmplxSpMatSi

  subroutine propertyRealDpMatSi &
    (xf, value,nrows, ncols,  dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    real(dp), intent(in) , dimension(:,:)  :: value
    integer, intent(in) :: nrows
    integer, intent(in) :: ncols
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nrows, :ncols), units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyRealDpMatSi

  subroutine propertyRealSpMatSi &
    (xf, value,nrows, ncols,  dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    real(sp), intent(in) , dimension(:,:)  :: value
    integer, intent(in) :: nrows
    integer, intent(in) :: ncols
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nrows, :ncols), units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyRealSpMatSi

  subroutine propertyIntMatSi &
    (xf, value,nrows, ncols,  dictRef, convention, title, id, ref, role, units)

    type(xmlf_t), intent(inout)              :: xf
    integer, intent(in) , dimension(:,:)  :: value
    integer, intent(in) :: nrows
    integer, intent(in) :: ncols
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nrows, :ncols), units=units)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyIntMatSi

  subroutine propertyLgMatSi &
    (xf, value,nrows, ncols,  dictRef, convention, title, id, ref, role)

    type(xmlf_t), intent(inout)              :: xf
    logical, intent(in) , dimension(:,:)  :: value
    integer, intent(in) :: nrows
    integer, intent(in) :: ncols
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role


    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nrows, :ncols))
    call xml_EndElement(xf, "property")
 
  end subroutine propertyLgMatSi

  subroutine propertyChMatSi &
    (xf, value,nrows, ncols,  dictRef, convention, title, id, ref, role, units)

    type(xmlf_t), intent(inout)              :: xf
    character(len=*), intent(in) , dimension(:,:)  :: value
    integer, intent(in) :: nrows
    integer, intent(in) :: ncols
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in) , optional  :: units

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value(:nrows, :ncols), units=units)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyChMatSi


  subroutine propertyCmplxDpMatSh &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    complex(dp), intent(in) , dimension(:,:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyCmplxDpMatSh

  subroutine propertyCmplxSpMatSh &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    complex(sp), intent(in) , dimension(:,:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyCmplxSpMatSh

  subroutine propertyRealDpMatSh &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    real(dp), intent(in) , dimension(:,:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyRealDpMatSh

  subroutine propertyRealSpMatSh &
    (xf, value, dictRef, convention, title, id, ref, role, units, fmt)

    type(xmlf_t), intent(inout)              :: xf
    real(sp), intent(in) , dimension(:,:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units
    character(len=*), intent(in), optional :: fmt

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units, fmt=fmt)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyRealSpMatSh

  subroutine propertyIntMatSh &
    (xf, value, dictRef, convention, title, id, ref, role, units)

    type(xmlf_t), intent(inout)              :: xf
    integer, intent(in) , dimension(:,:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in)   :: units

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyIntMatSh

  subroutine propertyLgMatSh &
    (xf, value, dictRef, convention, title, id, ref, role)

    type(xmlf_t), intent(inout)              :: xf
    logical, intent(in) , dimension(:,:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role


    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyLgMatSh

  subroutine propertyChMatSh &
    (xf, value, dictRef, convention, title, id, ref, role, units)

    type(xmlf_t), intent(inout)              :: xf
    character(len=*), intent(in) , dimension(:,:)  :: value
    character(len=*), intent(in), optional :: dictRef
    character(len=*), intent(in), optional :: convention
    character(len=*), intent(in), optional :: title
    character(len=*), intent(in), optional :: id
    character(len=*), intent(in), optional :: ref
    character(len=*), intent(in), optional :: role

    character(len=*), intent(in) , optional  :: units

    call xml_NewElement(xf, "property")
    if (present(dictRef)) call xml_addAttribute(xf, "dictRef", dictRef)
    if (present(convention)) call xml_addAttribute(xf, "convention", convention)
    if (present(title)) call xml_addAttribute(xf, "title", title)
    if (present(id)) call xml_addAttribute(xf, "id", id)
    if (present(ref)) call xml_addAttribute(xf, "ref", ref)
    if (present(role)) call xml_addAttribute(xf, "role", role)

    call stmAddValue(xf=xf, value=value, units=units)
    call xml_EndElement(xf, "property")
 
  end subroutine propertyChMatSh


end module m_wcml_property

