9 hfile,hfiletype,kluout,ounif, &
49 USE modd_prep, ONLY : cingrid_type, cinterp_type, xlat_out, xlon_out,&
52 USE modi_prep_ocean_unif
53 USE modi_prep_ocean_netcdf
54 USE modi_prep_ocean_ascllv
58 USE yomhook
,ONLY : lhook, dr_hook
59 USE parkind1
,ONLY : jprb
72 TYPE(ocean_t),
INTENT(INOUT) :: o
76 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
77 CHARACTER(LEN=28),
INTENT(IN) :: hfile
78 CHARACTER(LEN=6),
INTENT(IN) :: hfiletype
79 INTEGER,
INTENT(IN) :: kluout
80 LOGICAL,
INTENT(IN) :: ounif
81 CHARACTER(LEN=7) :: hsurf
82 CHARACTER(LEN=28),
INTENT(IN),
OPTIONAL :: hncvarname
87 REAL,
POINTER,
DIMENSION(:,:,:) ::zfieldin
88 REAL,
POINTER,
DIMENSION(:,:) ::zfield
89 REAL,
ALLOCATABLE,
DIMENSION(:,:,:)::zfieldout
93 REAL(KIND=JPRB) :: zhook_handle
99 IF (lhook) CALL dr_hook(
'PREP_HOR_OCEAN_FIELD',0,zhook_handle)
102 WRITE(kluout,*)
'*****warning*****: you ask for uniform oceanic variables'
104 ELSE IF (hfiletype==
'NETCDF')
THEN
107 ELSE IF (hfiletype==
'ASCII')
THEN
108 WRITE(kluout,*)
'PERSONAL LIB TEST FOR READING ',hfiletype,
'file type'
109 WRITE(kluout,*)
'ASCII FILE MUST CONTAIN LAT,LON,DEPTH,T,S,U,V'
111 hprogram,hsurf,hfile,kluout,zfieldin)
113 CALL
abor1_sfx(
'PREP_OCEAN_HOR_FIELD: data file type not supported : '//hfiletype)
120 ALLOCATE(zfieldout(
SIZE(sg%XLAT),
SIZE(zfieldin,2),
SIZE(zfieldin,3)) )
121 ALLOCATE(zfield(
SIZE(zfieldin,1),
SIZE(zfieldin,3)))
123 DO jlev=1,
SIZE(zfieldin,2)
124 zfield(:,:)=zfieldin(:,jlev,:)
126 kluout,zfield,zfieldout(:,jlev,:))
134 ALLOCATE(o%XSEAT(
SIZE(zfieldout,1),nockmin:nockmax))
135 ALLOCATE(or%XSEAT_REL(
SIZE(zfieldout,1),nockmin:nockmax))
137 o%XSEAT(:,jlev) = zfieldout(:,jlev,1)
140 o%XSEAT(:,nockmin)=o%XSEAT(:,ik1)
144 or%XSEAT_REL(:,:) = o%XSEAT(:,:)
147 ALLOCATE(o%XSEAS(
SIZE(zfieldout,1),nockmin:nockmax))
148 ALLOCATE(or%XSEAS_REL(
SIZE(zfieldout,1),nockmin:nockmax))
150 o%XSEAS(:,jlev) = zfieldout(:,jlev,1)
152 o%XSEAS(:,nockmin)=o%XSEAS(:,ik1)
156 or%XSEAS_REL(:,:) = o%XSEAS(:,:)
159 ALLOCATE(o%XSEAU(
SIZE(zfieldout,1),nockmin:nockmax))
160 ALLOCATE(or%XSEAU_REL(
SIZE(zfieldout,1),nockmin:nockmax))
162 o%XSEAU(:,jlev) = zfieldout(:,jlev,1)
164 o%XSEAU(:,nockmin)=o%XSEAU(:,ik1)
166 IF (.NOT.o%LCURRENT) o%XSEAU(:,:)=0.
168 or%XSEAU_REL(:,:) = o%XSEAU(:,:)
171 ALLOCATE(o%XSEAV(
SIZE(zfieldout,1),nockmin:nockmax))
172 ALLOCATE(or%XSEAV_REL(
SIZE(zfieldout,1),nockmin:nockmax))
174 o%XSEAV(:,jlev) = zfieldout(:,jlev,1)
176 o%XSEAV(:,nockmin)=o%XSEAV(:,ik1)
178 IF (.NOT.o%LCURRENT) o%XSEAV(:,:)=0.
180 or%XSEAV_REL(:,:) = o%XSEAV(:,:)
189 DEALLOCATE(zfieldout)
190 IF (lhook) CALL dr_hook(
'PREP_HOR_OCEAN_FIELD',1,zhook_handle)
subroutine prep_ocean_netcdf(HPROGRAM, HSURF, HFILE, HFILETYPE, KLUOUT, HNCVARNAME, PFIELD)
subroutine prep_ocean_unif(KLUOUT, HSURF, PFIELD)
subroutine prep_ocean_ascllv(DTCO, UG, U, HPROGRAM, HSURF, HFILE, KLUOUT, PFIELD)
subroutine abor1_sfx(YTEXT)
subroutine hor_interpol(DTCO, U, KLUOUT, PFIELDIN, PFIELDOUT)
subroutine prep_hor_ocean_field(DTCO, UG, U, O, OR, SG, HPROGRAM, HFILE, HFILETYPE, KLUOUT, OUNIF, HSURF, HNCVARNAME)