SURFEX v8.1
General documentation of Surfex
make_choice_array.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 SUBROUTINE make_choice_array(HPROGRAM, KNPATCH, ODIM, HRECFM, PWORK, HDIR, KPATCH)
6 !
7 USE yomhook ,ONLY : lhook, dr_hook
8 USE parkind1 ,ONLY : jprb
9 !
11 !
12 IMPLICIT NONE
13 !
14  CHARACTER(LEN=*), INTENT(IN) :: HPROGRAM
15 INTEGER, INTENT(IN) :: KNPATCH
16 LOGICAL, INTENT(IN) :: ODIM
17  CHARACTER(LEN=*), INTENT(IN) :: HRECFM
18 REAL, DIMENSION(:,:), INTENT(INOUT) :: PWORK
19 !
20  CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: HDIR
21 INTEGER, INTENT(IN), OPTIONAL :: KPATCH
22 !
23  CHARACTER(LEN=12) :: YRECFM
24 INTEGER :: JP, IRESP, IPATCH
25  CHARACTER(LEN=1) :: YDIR
26  CHARACTER(LEN=2) :: YPAT
27 REAL(KIND=JPRB) :: ZHOOK_HANDLE
28 !
29 IF (lhook) CALL dr_hook('MAKE_CHOICE_ARRAY',0,zhook_handle)
30 !
31 ydir = 'H'
32 IF (PRESENT(hdir)) ydir = hdir
33 !
34 ipatch = -1
35 IF (knpatch==1.AND.PRESENT(kpatch)) ipatch = kpatch
36 !
37 IF (odim) THEN
38  DO jp=1,knpatch
39  IF (ipatch==-1) THEN
40  WRITE(ypat,'(I2)') jp
41  ELSEIF (ipatch/=0) THEN
42  WRITE(ypat,'(I2)') ipatch
43  ENDIF
44  yrecfm=adjustl(hrecfm(:len_trim(hrecfm)))
45  IF (ipatch/=0) yrecfm=trim(yrecfm)//'P'//adjustl(ypat(:len_trim(ypat)))
46  CALL read_surf(hprogram,yrecfm,pwork(:,jp),iresp,hdir=ydir)
47  ENDDO
48 ELSE
49  CALL read_surf(hprogram,hrecfm,pwork(:,:),iresp,hdir=ydir)
50 ENDIF
51 !
52 IF (lhook) CALL dr_hook('MAKE_CHOICE_ARRAY',1,zhook_handle)
53 !
54 END SUBROUTINE make_choice_array
55 
subroutine make_choice_array(HPROGRAM, KNPATCH, ODIM, HRECFM, PWORK, HDIR, KPATCH)
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15