1 | MODULE sbcwave |
---|
2 | !!====================================================================== |
---|
3 | !! *** MODULE sbcwave *** |
---|
4 | !! Wave module |
---|
5 | !!====================================================================== |
---|
6 | !! History : 3.3.1 ! 2011-09 (Adani M) Original code |
---|
7 | !!---------------------------------------------------------------------- |
---|
8 | USE iom ! I/O manager library |
---|
9 | USE in_out_manager ! I/O manager |
---|
10 | USE lib_mpp ! distribued memory computing library |
---|
11 | USE fldread ! read input fields |
---|
12 | USE sbc_oce ! Surface boundary condition: ocean fields |
---|
13 | |
---|
14 | |
---|
15 | !!---------------------------------------------------------------------- |
---|
16 | !! sbc_wave : read drag coefficient from wave model in netcdf files |
---|
17 | !!---------------------------------------------------------------------- |
---|
18 | |
---|
19 | IMPLICIT NONE |
---|
20 | PRIVATE |
---|
21 | |
---|
22 | PUBLIC sbc_wave ! routine called in sbc_blk_core or sbc_blk_mfs |
---|
23 | |
---|
24 | TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_wave ! structure of input fields (file informations, fields read) |
---|
25 | REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:) :: cdn_wave |
---|
26 | |
---|
27 | !!---------------------------------------------------------------------- |
---|
28 | !! NEMO/OPA 4.0 , NEMO Consortium (2011) |
---|
29 | !! $Id: $ |
---|
30 | !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) |
---|
31 | !!---------------------------------------------------------------------- |
---|
32 | CONTAINS |
---|
33 | |
---|
34 | SUBROUTINE sbc_wave( kt ) |
---|
35 | !!--------------------------------------------------------------------- |
---|
36 | !! *** ROUTINE sbc_apr *** |
---|
37 | !! |
---|
38 | !! ** Purpose : read drag coefficient from wave model in netcdf files. |
---|
39 | !! |
---|
40 | !! ** Method : - Read namelist namsbc_wave |
---|
41 | !! - Read Cd_n10 fields in netcdf files |
---|
42 | !! ** action : |
---|
43 | !! |
---|
44 | !!--------------------------------------------------------------------- |
---|
45 | INTEGER, INTENT( in ) :: kt ! ocean time step |
---|
46 | INTEGER :: ierror ! return error code |
---|
47 | CHARACTER(len=100) :: cn_dir_cdg ! Root directory for location of drag coefficient files |
---|
48 | TYPE(FLD_N) :: sn_cdg ! informations about the fields to be read |
---|
49 | !!--------------------------------------------------------------------- |
---|
50 | NAMELIST/namsbc_wave/ sn_cdg, cn_dir_cdg |
---|
51 | !!--------------------------------------------------------------------- |
---|
52 | |
---|
53 | !!---------------------------------------------------------------------- |
---|
54 | ! |
---|
55 | ! |
---|
56 | ! ! -------------------- ! |
---|
57 | IF( kt == nit000 ) THEN ! First call kt=nit000 ! |
---|
58 | ! ! -------------------- ! |
---|
59 | ! !* set file information (default values) |
---|
60 | ! ... default values (NB: frequency positive => hours, negative => months) |
---|
61 | ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! |
---|
62 | ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! |
---|
63 | sn_cdg = FLD_N('cdg_wave' , 1 ,'drag_coeff', .true. , .false. , 'daily' , '' , '' ) |
---|
64 | cn_dir_cdg = './' ! directory in which the Patm data are |
---|
65 | |
---|
66 | |
---|
67 | REWIND( numnam ) !* read in namlist namsbc_wave |
---|
68 | READ ( numnam, namsbc_wave ) |
---|
69 | ! |
---|
70 | |
---|
71 | ALLOCATE( sf_wave(1), STAT=ierror ) !* allocate and fill sf_wave with sn_cdg |
---|
72 | IF( ierror > 0 ) CALL ctl_stop( 'STOP', 'sbc_wave: unable to allocate sf_wave structure' ) |
---|
73 | ! |
---|
74 | CALL fld_fill( sf_wave, (/ sn_cdg /), cn_dir_cdg, 'sbc_wave', 'Wave module ', 'namsbc_wave' ) |
---|
75 | ALLOCATE( sf_wave(1)%fnow(jpi,jpj,1) ) |
---|
76 | IF( sn_cdg%ln_tint ) ALLOCATE( sf_wave(1)%fdta(jpi,jpj,1,2) ) |
---|
77 | ALLOCATE( cdn_wave(jpi,jpj) ) |
---|
78 | cdn_wave(:,:) = 0.0 |
---|
79 | ENDIF |
---|
80 | ! |
---|
81 | ! |
---|
82 | CALL fld_read( kt, nn_fsbc, sf_wave ) !* read drag coefficient from external forcing |
---|
83 | cdn_wave(:,:) = sf_wave(1)%fnow(:,:,1) |
---|
84 | |
---|
85 | END SUBROUTINE sbc_wave |
---|
86 | |
---|
87 | !!====================================================================== |
---|
88 | END MODULE sbcwave |
---|