22 CHARACTER (LEN=32) :: clname =
'', cltype =
'', clmask =
'' 23 REAL,
POINTER :: zfld2 (:,:) => null ()
24 REAL,
POINTER :: zfld3 (:,:,:) => null ()
30 LOGICAL :: lstep0 = .false.
31 LOGICAL :: lstep1 = .false.
32 LOGICAL :: lstep2 = .false.
34 LOGICAL :: lpart1 = .true.
35 LOGICAL :: lpart2 = .false.
36 LOGICAL :: lpart3 = .true.
37 LOGICAL :: lpart4 = .false.
38 LOGICAL :: lpart5 = .true.
39 LOGICAL :: lpart6 = .true.
57 type(
prep_ctl),
INTENT (INOUT) :: ydctl
61 prep_ctl_can = (ydctl%LSTEP0 .EQV. ylctl%LSTEP0) .AND. (ydctl%LSTEP1 .EQV. ylctl%LSTEP1) .AND. &
62 & (ydctl%LSTEP2 .EQV. ylctl%LSTEP2) .AND. (ydctl%LPART1 .EQV. ylctl%LPART1) .AND. &
63 & (ydctl%LPART1 .EQV. ylctl%LPART1) .AND. (ydctl%LPART2 .EQV. ylctl%LPART2) .AND. &
64 & (ydctl%LPART3 .EQV. ylctl%LPART3) .AND. (ydctl%LPART4 .EQV. ylctl%LPART4) .AND. &
65 & (ydctl%LPART5 .EQV. ylctl%LPART5) .AND. (ydctl%LPART6 .EQV. ylctl%LPART6)
74 type(
prep_ctl),
INTENT (INOUT) :: ydctl
75 INTEGER,
INTENT (OUT) :: KCOUNT
82 DO WHILE (
ASSOCIATED (ylcfl))
83 IF (
ASSOCIATED (ylcfl%ZFLD2))
THEN 84 kcount = kcount +
SIZE (ylcfl%ZFLD2, 2)
85 ELSEIF (
ASSOCIATED (ylcfl%ZFLD3))
THEN 86 kcount = kcount +
SIZE (ylcfl%ZFLD3, 2) *
SIZE (ylcfl%ZFLD3, 3)
97 type(
prep_ctl),
INTENT (INOUT) :: ydctl
102 DO WHILE (
ASSOCIATED (ylcfl))
103 IF (
ASSOCIATED (ylcfl%ZFLD2))
THEN 104 DEALLOCATE (ylcfl%ZFLD2)
105 ELSEIF (
ASSOCIATED (ylcfl%ZFLD3))
THEN 106 DEALLOCATE (ylcfl%ZFLD3)
109 DEALLOCATE (ydctl%HEAD)
113 NULLIFY (ydctl%HEAD, ydctl%TAIL)
121 type(
prep_ctl),
INTENT (INOUT) :: ydctl
124 IF (
ASSOCIATED (ydctl%TAIL))
THEN 125 ydctl%TAIL%NEXT => ydcfl
126 ydcfl%PREV => ydctl%TAIL
141 type(
prep_ctl),
INTENT (INOUT) :: ydctl
146 IF (.NOT.
ASSOCIATED (ydcfl))
THEN 147 CALL abor1_sfx (
'PREP_CTL_SHIFT: ATTEMPT TO SHIFT EMPTY FIELD LIST')
150 ydctl%HEAD => ydcfl%NEXT
152 IF (
ASSOCIATED (ydctl%HEAD))
THEN 153 ydctl%HEAD%PREV => null()
162 type(
prep_ctl),
INTENT (INOUT) :: ydctl
163 CHARACTER (LEN=*),
INTENT (IN) :: CDSURF
164 CHARACTER (LEN=*),
INTENT (IN) :: CDTYPE
165 CHARACTER (LEN=*),
INTENT (IN) :: CDMASK
166 REAL,
POINTER :: PFIELDIN (:,:)
172 IF (ydctl%LPART2)
THEN 173 IF (ydctl%LSTEP0 .OR. ydctl%LSTEP1)
THEN 175 ylcfl%CLTYPE = cdtype
176 ylcfl%CLNAME = cdsurf
177 ylcfl%CLMASK = cdmask
178 ylcfl%ZFLD2 => pfieldin
181 ELSEIF (ydctl%LSTEP2)
THEN 183 IF (ylcfl%CLNAME /= cdsurf .OR. ylcfl%CLTYPE /= cdtype)
THEN 184 CALL abor1_sfx (
'PREP_CTL_INT_PART2: FIELD MISMATCH: EXPECTED '&
185 &//
trim(cdsurf)//
'/'//
trim(cdtype)//
', GOT '// &
186 &
trim(ylcfl%CLNAME)//
'/'//
trim(ylcfl%CLTYPE))
188 pfieldin => ylcfl%ZFLD2
189 NULLIFY (ylcfl%ZFLD2)
198 type(
prep_ctl),
INTENT (INOUT) :: ydctl
199 CHARACTER (LEN=*),
INTENT (IN) :: CDSURF
200 CHARACTER (LEN=*),
INTENT (IN) :: CDTYPE
201 CHARACTER (LEN=*),
INTENT (IN) :: CDMASK
202 REAL,
POINTER :: PFIELDIN (:,:)
203 REAL,
POINTER :: PFIELDOUT (:,:)
206 INTEGER :: IREP, ILONG, IPOSEX
207 INTEGER (8) :: JDIM (2)
209 IF (ydctl%LPART4)
THEN 218 type(
prep_ctl),
INTENT (INOUT) :: ydctl
219 CHARACTER (LEN=*),
INTENT (IN) :: CDSURF
220 CHARACTER (LEN=*),
INTENT (IN) :: CDTYPE
221 CHARACTER (LEN=*),
INTENT (IN) :: CDMASK
222 REAL,
POINTER :: PFIELDIN (:,:,:)
228 IF (ydctl%LPART2)
THEN 229 IF (ydctl%LSTEP0 .OR. ydctl%LSTEP1)
THEN 231 ylcfl%CLTYPE = cdtype
232 ylcfl%CLNAME = cdsurf
233 ylcfl%CLMASK = cdmask
234 ylcfl%ZFLD3 => pfieldin
237 ELSEIF (ydctl%LSTEP2)
THEN 239 IF (ylcfl%CLNAME /= cdsurf .OR. ylcfl%CLTYPE /= cdtype)
THEN 240 CALL abor1_sfx (
'PREP_CTL_INT_PART2: FIELD MISMATCH: EXPECTED '&
241 &//
trim(cdsurf)//
'/'//
trim(cdtype)//
', GOT '// &
242 &
trim(ylcfl%CLNAME)//
'/'//
trim(ylcfl%CLTYPE))
244 pfieldin => ylcfl%ZFLD3
245 NULLIFY (ylcfl%ZFLD3)
254 type(
prep_ctl),
INTENT (INOUT) :: ydctl
255 CHARACTER (LEN=*),
INTENT (IN) :: CDSURF
256 CHARACTER (LEN=*),
INTENT (IN) :: CDTYPE
257 CHARACTER (LEN=*),
INTENT (IN) :: CDMASK
258 REAL,
POINTER :: PFIELDIN (:,:,:)
259 REAL,
POINTER :: PFIELDOUT (:,:,:)
261 INTEGER :: IREP, ILONG, IPOSEX
262 INTEGER (8) :: JDIM (3)
265 IF (ydctl%LPART4)
THEN static const char * trim(const char *name, int *n)
subroutine prep_ctl_int_part4_3(YDCTL, CDSURF, CDTYPE, CDMASK, PFIELDIN, PFIELDOUT)
subroutine abor1_sfx(YTEXT)
subroutine prep_ctl_push(YDCTL, YDCFL)
subroutine prep_ctl_int_part2_3(YDCTL, CDSURF, CDTYPE, CDMASK, PFIELDIN)
subroutine prep_ctl_count(YDCTL, KCOUNT)
logical function prep_ctl_can(YDCTL)
subroutine prep_ctl_int_part4_2(YDCTL, CDSURF, CDTYPE, CDMASK, PFIELDIN, PFIELDOUT)
subroutine prep_ctl_free(YDCTL)
subroutine prep_ctl_shift(YDCTL, YDCFL)
subroutine prep_ctl_int_part2_2(YDCTL, CDSURF, CDTYPE, CDMASK, PFIELDIN)