SURFEX v8.1
General documentation of Surfex
write_field_1d_patch.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 write_field_1d_patch(HSELECT,HPROGRAM,HRECFM,HCOMMENT,KP,KMASK,PFIELD_IN,KSIZE,PWORK_WR)
6 !
8 !
9 USE modd_surf_par, ONLY : xundef
10 !
13 !
14 USE yomhook ,ONLY : lhook, dr_hook
15 USE parkind1 ,ONLY : jprb
16 !
17 IMPLICIT NONE
18 !
19  CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HSELECT
20  CHARACTER(LEN=*), INTENT(IN) :: HPROGRAM
21  CHARACTER(LEN=*), INTENT(IN) :: HRECFM
22  CHARACTER(LEN=*), INTENT(IN) :: HCOMMENT
23 INTEGER, INTENT(IN) :: KP
24 INTEGER, DIMENSION(:), INTENT(IN) :: KMASK
25 REAL, DIMENSION(:), INTENT(IN) :: PFIELD_IN
26 INTEGER, INTENT(IN) :: KSIZE
27 REAL, DIMENSION(:,:), OPTIONAL, INTENT(INOUT) :: PWORK_WR
28 !
29 REAL, DIMENSION(KSIZE,1) :: ZWORK
30  CHARACTER(LEN=12) :: YRECFM
31  CHARACTER(LEN=2) :: YPAT
32 INTEGER :: IRESP
33 REAL(KIND=JPRB) :: ZHOOK_HANDLE
34 !
35 IF (lhook) CALL dr_hook('WRITE_FIELD_1D_PATCH',0,zhook_handle)
36 !
37 yrecfm=adjustl(hrecfm(:len_trim(hrecfm)))
38  CALL unpack_same_rank(kmask,pfield_in,zwork(:,1),xundef)
39 !
40 IF (lsplit_patch) THEN
41  !
42  IF (kp/=0) THEN
43  WRITE(ypat,'(I2)') kp
44  yrecfm=adjustl(yrecfm(:len_trim(yrecfm)))//'P'//adjustl(ypat(:len_trim(ypat)))
45  ENDIF
46  CALL write_surf(hselect,hprogram,yrecfm,zwork(:,1),iresp,hcomment=hcomment)
47  !
48 ELSE
49  !
50  IF (kp/=0) THEN
51  pwork_wr(:,kp) = zwork(:,1)
52  IF ( kp==SIZE(pwork_wr,2) ) THEN
53  CALL write_surf(hselect,hprogram,yrecfm,pwork_wr,iresp,hcomment=hcomment)
54  ENDIF
55  ELSE
56  CALL write_surf(hselect,hprogram,yrecfm,zwork(:,:),iresp,hcomment=hcomment)
57  ENDIF
58  !
59 ENDIF
60 !
61 IF (lhook) CALL dr_hook('WRITE_FIELD_1D_PATCH',1,zhook_handle)
62 !
63 END SUBROUTINE write_field_1d_patch
subroutine write_field_1d_patch(HSELECT, HPROGRAM, HRECFM, HCOMMENT, KP, KMASK, PFIELD_IN, KSIZE, PWORK_WR)
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15