54 USE xios
, ONLY : xios_set_field_attr, xios_is_defined_field_attr, &
55 xios_is_valid_axis, xios_get_axis_attr, xios_is_defined_axis_attr
60 USE modi_sfx_xios_check_field
68 CHARACTER(LEN=*) ,
INTENT(IN) :: HREC
69 CHARACTER(LEN=100) ,
INTENT(IN) :: HCOMMENT
70 LOGICAL ,
INTENT(INOUT):: OWRITE
71 REAL,
DIMENSION(:,:) ,
INTENT(IN) :: PFIELD2
72 CHARACTER(LEN=*) ,
INTENT(IN) ,
OPTIONAL :: HAXIS
76 LOGICAL :: LISDEF, LLWRITE, LDEFUNITS
77 LOGICAL :: LVALID_AXIS, LVERTICAL_AXIS
78 CHARACTER(LEN=100) :: YAXIS
79 CHARACTER(LEN=100) :: YUNITS
80 REAL(KIND=JPRB),
DIMENSION(:),
ALLOCATABLE :: ZAXIS
82 CHARACTER(LEN=3) :: YIDIM
83 REAL(KIND=JPRB) :: ZHOOK_HANDLE
85 IF (
lhook)
CALL dr_hook(
'SFX_XIOS_CHECK_FIELD_2D',0,zhook_handle)
91 CALL xios_is_defined_field_attr(hrec,axis_ref=lisdef)
93 IF ( .NOT. lisdef )
THEN 94 IF (.NOT.
PRESENT(haxis) .OR. (
trim(haxis)==
''))
THEN 95 yaxis=
'you_should_define_a_dim_for_'//hrec//
'_in_xml_file_or_call_set_axis_in_code' 99 lvalid_axis=xios_is_valid_axis(yaxis)
102 IF (.NOT. lvalid_axis)
THEN 103 ALLOCATE(zaxis(
SIZE(pfield2,2)))
104 zaxis=(/(idim, idim=1,
SIZE(pfield2,2))/)
110 CALL xios_set_field_attr(hrec, axis_ref=yaxis)
113 DO idim=1,
SIZE(pfield2,2)
115 WRITE(yidim,
'(I1)') idim
117 WRITE(yidim,
'(I2)') idim
120 owrite= owrite .AND. llwrite
123 CALL xios_set_field_attr(hrec, enabled=.false.)
129 IF (
lhook)
CALL dr_hook(
'SFX_XIOS_CHECK_FIELD_2D',1,zhook_handle)
static const char * trim(const char *name, int *n)
subroutine set_axis(HNAME, PVALUE, CDPOSITIVE, KSIZE, CDUNITS, PBOUNDS)
subroutine sfx_xios_check_field_2d(U, HREC, HCOMMENT, OWRITE, PFIELD2, HAXIS)
character(len=30) ypatch_dim_name
subroutine sfx_xios_check_field(U, HREC, HCOMMENT, OWRITE, PFIELD1, PFIELD2, PFIELD3, HAXIS)