Changeset 4229
- Timestamp:
- 2013-11-18T12:36:11+01:00 (11 years ago)
- Location:
- branches/2013/dev_MERCATOR_UKMO_2013
- Files:
-
- 38 edited
- 8 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_MERCATOR_UKMO_2013/DOC/TexFiles/Chapters/Chap_OBS.tex
r3294 r4229 5 5 \label{OBS} 6 6 7 Authors: D. Lea, M. Martin, K. Mogensen, A. Vidard, A. Weaver ... % do we keep that ?7 Authors: D. Lea, M. Martin, K. Mogensen, A. Vidard, A. Weaver, A. Ryan, ... % do we keep that ? 8 8 9 9 \minitoc … … 42 42 where to obtain data and how to setup the namelist. Section~\ref{OBS_details} introduces some 43 43 more technical details of the different observation types used and also shows a more complete 44 namelist. Section~\ref{OBS_theory} introduces some of the theoretical aspects of the 45 observation operator including interpolation methods and running on multiple processors. 46 Section~\ref{OBS_obsutils} introduces some utilities to help working with the files produced 47 by the OBS code. 44 namelist. Section~\ref{OBS_theory} introduces some of the theoretical aspects of the observation 45 operator including interpolation methods and running on multiple processors. 46 Section~\ref{OBS_ooo} describes the offline observation operator code. 47 Section~\ref{OBS_obsutils} introduces some utilities to help working with the files 48 produced by the OBS code. 48 49 49 50 % ================================================================ … … 786 787 \newpage 787 788 789 % ================================================================ 790 % Offline observation operator documentation 791 % ================================================================ 792 793 %\usepackage{framed} 794 795 \section{Offline observation operator} 796 \label{OBS_ooo} 797 798 \subsection{Concept} 799 800 The obs oper maps model variables to observation space. It is possible to apply this mapping 801 without running the model. The software which performs this functionality is known as the 802 \textbf{offline obs oper}. The obs oper is divided into three stages. An initialisation phase, 803 an interpolation phase and an output phase. The implementation of which is outlined in the 804 previous sections. During the interpolation phase the offline obs oper populates the model 805 arrays by reading saved model fields from disk. 806 807 There are two ways of exploiting this offline capacity. The first is to mimic the behaviour of 808 the online system by supplying model fields at regular intervals between the start and the end 809 of the run. This approach results in a single model counterpart per observation. This kind of 810 usage produces feedback files the same file format as the online obs oper. 811 The second is to take advantage of the offline setting in which multiple model counterparts can 812 be calculated per observation. In this case it is possible to consider all forecasts verifying 813 at the same time. By forecast, I mean any method which produces an estimate of physical reality 814 which is not an observed value. In the case of class 4 files this means forecasts, analyses, persisted 815 analyses and climatological values verifying at the same time. Although the class 4 file format 816 doesn't account for multiple ensemble members or multiple experiments per observation, it is possible 817 to include these components in the same or multiple files. 818 819 %-------------------------------------------------------------------------------------------------------- 820 % offline_oper.exe 821 %-------------------------------------------------------------------------------------------------------- 822 823 \subsection{Using the offline observation operator} 824 825 \subsubsection{Building} 826 827 In addition to \emph{OPA\_SRC} the offline obs oper requires the inclusion 828 of the \emph{OOO\_SRC} directory. \emph{OOO\_SRC} contains a replacement \textbf{nemo.f90} and 829 \textbf{nemogcm.F90} which overwrites the resultant \textbf{nemo.exe}. This is the approach taken 830 by \emph{SAS\_SRC} and \emph{OFF\_SRC}. 831 832 %-------------------------------------------------------------------------------------------------------- 833 % Running 834 %-------------------------------------------------------------------------------------------------------- 835 \subsubsection{Running} 836 837 The simplest way to use the executable is to edit and append the \textbf{ooo.nml} namelist to 838 a full NEMO namelist and then to run the executable as if it were nemo.exe. 839 840 \subsubsection{Quick script} 841 842 A useful Python utility to control the namelist options can be found in \textbf{OBSTOOLS/OOO}. The 843 functions which locate model fields and observation files can be manually specified. The package 844 can be installed by appropriate use of the included setup.py script. 845 846 Documentation can be auto-generated by Sphinx by running \emph{make html} in the \textbf{doc} directory. 847 848 %-------------------------------------------------------------------------------------------------------- 849 % Configuration section 850 %-------------------------------------------------------------------------------------------------------- 851 \subsection{Configuring the offline observation operator} 852 The observation files and settings understood by \textbf{namobs} have been outlined in the online 853 obs oper section. In addition there are two further namelists wich control the operation of the offline 854 obs oper. \textbf{namooo} which controls the input model fields and \textbf{namcl4} which controls the 855 production of class 4 files. 856 857 \subsubsection{Single field} 858 859 In offline mode model arrays are populated at appropriate time steps via input files. 860 At present, \textbf{tsn} and \textbf{sshn} are populated by the default read routines. 861 These routines will be expanded upon in future versions to allow the specification of any 862 model variable. As such, input files must be global versions of the model domain with 863 \textbf{votemper}, \textbf{vosaline} and optionally \textbf{sshn} present. 864 865 For each field read there must be an entry in the \textbf{namooo} namelist specifying the 866 name of the file to read and the index along the \emph{time\_counter}. For example, to 867 read the second time counter from a single file the namelist would be. 868 869 \begin{alltt} 870 \tiny 871 \begin{verbatim} 872 !---------------------------------------------------------------------- 873 ! namooo Offline obs_oper namelist 874 !---------------------------------------------------------------------- 875 ! ooo_files specifies the files containing the model counterpart 876 ! nn_ooo_idx specifies the time_counter index within the model file 877 &namooo 878 ooo_files = "foo.nc" 879 nn_ooo_idx = 2 880 / 881 \end{verbatim} 882 \end{alltt} 883 884 \subsubsection{Multiple fields per run} 885 886 Model field iteration is controlled via \textbf{nn\_ooo\_freq} which specifies 887 the number of model steps at which the next field gets read. For example, if 888 12 hourly fields are to be interpolated in a setup where 288 steps equals 24 hours. 889 890 \begin{alltt} 891 \tiny 892 \begin{verbatim} 893 !---------------------------------------------------------------------- 894 ! namooo Offline obs_oper namelist 895 !---------------------------------------------------------------------- 896 ! ooo_files specifies the files containing the model counterpart 897 ! nn_ooo_idx specifies the time_counter index within the model file 898 ! nn_ooo_freq specifies number of time steps between read operations 899 &namooo 900 ooo_files = "foo.nc" "foo.nc" 901 nn_ooo_idx = 1 2 902 nn_ooo_freq = 144 903 / 904 \end{verbatim} 905 \end{alltt} 906 907 The above namelist will result in feedback files whose first 12 hours contain 908 the first field of foo.nc and the second 12 hours contain the second field. 909 910 %\begin{framed} 911 \textbf{Note} Missing files can be denoted as "nofile". 912 %\end{framed} 913 914 It is easy to see how a collection of fields taken fron a number of files 915 at different indices can be combined at a particular frequency in time to 916 generate a pseudo model evolution. As long as all that is needed is a single 917 model counterpart at a regular interval then namooo is all that needs to 918 be edited. However, a far more interesting approach can be taken in which 919 multiple forecasts, analyses, persisted analyses and climatologies are 920 considered against the same set of observations. For this a slightly more 921 complicated approach is needed. It is referred to as \emph{Class 4} since 922 it is the fourth metric defined by the GODAE intercomparison project. 923 924 %-------------------------------------------------------------------------------------------------------- 925 % Class 4 file section 926 %-------------------------------------------------------------------------------------------------------- 927 \subsubsection{Multiple model counterparts per observation a.k.a Class 4} 928 929 A generalisation of feedback files to allow multiple model components per observation. For a single 930 observation, as well as previous forecasts verifying at the same time there are also analyses, persisted 931 analyses and climatologies. 932 933 934 The above namelist performs two basic functions. It organises the fields 935 given in \textbf{namooo} into groups so that observations can be matched 936 up multiple times. It also controls the metadata and the output variable 937 of the class 4 file when a write routine is called. 938 939 %\begin{framed} 940 \textbf{Note: ln\_cl4} must be set to \emph{.TRUE.} in \textbf{namobs} 941 to use class 4 outputs. 942 %\end{framed} 943 944 \subsubsection{Class 4 naming convention} 945 946 The standard class 4 file naming convention is as follows. 947 948 \noindent 949 \linebreak 950 \textbf{\$\{prefix\}\_\$\{yyyymmdd\}\_\$\{sys\}\_\$\{cfg\}\_\$\{vn\}\_\$\{kind\}\_\$\{nproc\}.nc} 951 952 \noindent 953 \linebreak 954 Much of the namelist is devoted to specifying this convention. The 955 following namelist settings control the elements of the output 956 file names. Each should be specified as a single string of character data. 957 958 \begin{description} 959 \item[cl4\_prefix] 960 Prefix for class 4 files e.g. class4 961 \item[cl4\_date] 962 YYYYMMDD validity date 963 \item[cl4\_sys] 964 The name of the class 4 model system e.g. FOAM 965 \item[cl4\_cfg] 966 The name of the class 4 model configuration e.g. orca025 967 \item[cl4\_vn] 968 The name of the class 4 model version e.g. 12.0 969 \end{description} 970 971 \noindent 972 The kind is specified by the observation type internally to the obs oper. The processor 973 number is specified internally in NEMO. 974 975 \subsubsection{Class 4 file global attributes} 976 977 Global attributes necessary to fulfill the class 4 file definition. These 978 are also useful pieces of information when collaborating with external 979 partners. 980 981 \begin{description} 982 \item[cl4\_contact] 983 Contact email for class 4 files. 984 \item[cl4\_inst] 985 The name of the producers institution. 986 \item[cl4\_cfg] 987 The name of the class 4 model configuration e.g. orca025 988 \item[cl4\_vn] 989 The name of the class 4 model version e.g. 12.0 990 \end{description} 991 992 \noindent 993 The obs\_type, 994 creation date and validity time are specified internally to the obs oper. 995 996 \subsubsection{Class 4 model counterpart configuration} 997 998 As seen previously it is possible to perform a single sweep of the 999 obs oper and specify a collection of model fields equally spaced 1000 along that sweep. In the class 4 case the single sweep is replaced 1001 with multiple sweeps and a certain ammount of book keeping is 1002 needed to ensure each model counterpart makes its way to the 1003 correct piece of memory in the output files. 1004 1005 \noindent 1006 \linebreak 1007 In terms of book keeping, the offline obs oper needs to know how many 1008 full sweeps need to be performed. This is specified via the 1009 \textbf{cl4\_match\_len} variable and is the total number of model 1010 counterparts per observation. For example, a 3 forecasts plus 3 persistence 1011 fields plus an analysis field would be 7 counterparts per observation. 1012 1013 \begin{alltt} 1014 \tiny 1015 \begin{verbatim} 1016 cl4_match_len = 7 1017 \end{verbatim} 1018 \end{alltt} 1019 1020 Then to correctly allocate a class 4 file the forecast axis must be defined. This 1021 is controlled via \textbf{cl4\_fcst\_len}, which in out above example would be 3. 1022 1023 \begin{alltt} 1024 \tiny 1025 \begin{verbatim} 1026 cl4_fcst_len = 3 1027 \end{verbatim} 1028 \end{alltt} 1029 1030 Then for each model field it is necessary to designate what class 4 variable and 1031 index along the forecast dimension the model counterpart should be stored in the 1032 output file. As well as a value for that lead time in hours, this will be useful 1033 when interpreting the data afterwards. 1034 1035 \begin{alltt} 1036 \tiny 1037 \begin{verbatim} 1038 cl4_vars = "forecast" "forecast" "forecast" "persistence" "persistence" 1039 "persistence" "best_estimate" 1040 cl4_fcst_idx = 1 2 3 1 2 3 1 1041 cl4_leadtime = 12 36 60 1042 \end{verbatim} 1043 \end{alltt} 1044 1045 In terms of files and indices of fields inside each file the class 4 approach 1046 makes use of the \textbf{namooo} namelist. If our fields are in separate files 1047 with a single field per file our example inputs will be specified. 1048 1049 \begin{alltt} 1050 \tiny 1051 \begin{verbatim} 1052 ooo_files = "F.1.nc" "F.2.nc" "F.3.nc" "P.1.nc" "P.2.nc" "P.3.nc" "A.1.nc" 1053 nn_ooo_idx = 1 1 1 1 1 1 1 1054 \end{verbatim} 1055 \end{alltt} 1056 1057 When we combine all of the naming conventions, global attributes and i/o instructions 1058 the class 4 namelist becomes. 1059 1060 \begin{alltt} 1061 \tiny 1062 \begin{verbatim} 1063 !---------------------------------------------------------------------- 1064 ! namooo Offline obs_oper namelist 1065 !---------------------------------------------------------------------- 1066 ! ooo_files specifies the files containing the model counterpart 1067 ! nn_ooo_idx specifies the time_counter index within the model file 1068 ! nn_ooo_freq specifies number of time steps between read operations 1069 &namooo 1070 ooo_files = "F.1.nc" "F.2.nc" "F.3.nc" "P.1.nc" "P.2.nc" "P.3.nc" "A.1.nc" 1071 nn_ooo_idx = 1 1 1 1 1 1 1 1072 / 1073 !---------------------------------------------------------------------- 1074 ! namcl4 Offline obs_oper class 4 namelist 1075 !---------------------------------------------------------------------- 1076 ! 1077 ! Naming convention 1078 ! ----------------- 1079 ! cl4_prefix specifies the output file prefix 1080 ! cl4_date specifies the output file validity date 1081 ! cl4_sys specifies the model counterpart system 1082 ! cl4_cfg specifies the model counterpart configuration 1083 ! cl4_vn specifies the model counterpart version 1084 ! cl4_inst specifies the model counterpart institute 1085 ! cl4_contact specifies the file producers contact details 1086 ! 1087 ! I/O specification 1088 ! ----------------- 1089 ! cl4_vars specifies the names of the output file netcdf variable 1090 ! cl4_fcst_idx specifies output file forecast index 1091 ! cl4_fcst_len specifies forecast axis length 1092 ! cl4_match_len specifies number of unique matches per observation 1093 ! cl4_leadtime specifies the forecast axis lead time 1094 ! 1095 &namcl4 1096 cl4_match_len = 7 1097 cl4_fcst_len = 3 1098 cl4_fcst_idx = 1 2 3 1 2 3 1 1099 cl4_vars = "forecast" "forecast" "forecast" "persistence" "persistence" 1100 "persistence" "best_estimate" 1101 cl4_leadtime = 12 36 60 1102 cl4_prefix = "class4" 1103 cl4_date = "20130101" 1104 cl4_vn = "12.0" 1105 cl4_sys = "FOAM" 1106 cl4_cfg = "AMM7" 1107 cl4_contact = "example@example.com" 1108 cl4_inst = "UK Met Office" 1109 / 1110 \end{verbatim} 1111 \end{alltt} 1112 1113 \subsubsection{Climatology interpolation} 1114 1115 The climatological counterpart is generated at the start of the run by restarting 1116 the model from climatology through appropriate use of \textbf{namtsd}. To override 1117 the offline observation operator read routine and to take advantage of the restart 1118 settings, specify the first entry in \textbf{cl4\_vars} as "climatology". This will then 1119 pipe the restart from climatology into the output class 4 file. As in every other 1120 class 4 matchup the input file, input index and output index must be specified. 1121 These can be replaced with dummy data since they are not used but they must be 1122 present to cycle through the matchups correctly. 1123 1124 \subsection{Advanced usage} 1125 1126 In certain cases it may be desirable to include both multiple model fields per 1127 observation window with multiple match ups per observation. This can be achieved 1128 by specifying \textbf{nn\_ooo\_freq} as well as the class 4 settings. Care must 1129 be taken in generating the ooo\_files list such that the files are arranged into 1130 consecutive blocks of single match ups. For example, 2 forecast fields 1131 of 12 hourly data would result in 4 separate read operations but only 2 write 1132 operations, 1 per forecast. 1133 1134 \begin{alltt} 1135 \tiny 1136 \begin{verbatim} 1137 ooo_files = "F1.nc" "F1.nc" "F2.nc" "F2.nc" 1138 ... 1139 cl4_fcst_idx = 1 2 1140 \end{verbatim} 1141 \end{alltt} 1142 1143 The above notation reveals the internal split between match up iterators and file 1144 iterators. This technique has not been used before so experimentation is needed 1145 before results can be trusted. 1146 1147 1148 1149 1150 \newpage 1151 788 1152 \section{Observation Utilities} 789 1153 \label{OBS_obsutils} … … 801 1165 handling observation files and the feedback file output from the NEMO observation operator. 802 1166 The utilities are as follows 1167 1168 \subsubsection{c4comb} 1169 1170 The program c4comb combines multiple class 4 files produced by individual processors in an 1171 MPI run of NEMO offline obs\_oper into a single class 4 file. The program is called in the following way: 1172 1173 \begin{alltt} 1174 \footnotesize 1175 \begin{verbatim} 1176 c4comb.exe outputfile inputfile1 inputfile2 ... 1177 \end{verbatim} 1178 \end{alltt} 803 1179 804 1180 \subsubsection{corio2fb} -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/CONFIG/AMM12/EXP00/namelist
r3948 r4229 11 11 !! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) 12 12 !! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) 13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl )13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl, namc1d, namc1d_uvd, namc1d_dyndmp) 14 14 !! 11 - Obs & Assim (namobs, nam_asminc) 15 15 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 28 28 nn_it000 = 1 ! first time step 29 29 nn_itend = 2880 ! last time step (std 1 day = 288) 30 nn_date0 = 20 070101 ! date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1)30 nn_date0 = 20120101 ! date at nit_0000 (format yyyymmdd) used if ln_rstart=F or (ln_rstart=T and nn_rstctl=0 or 1) 31 31 nn_leapy = 1 ! Leap year calendar (1) or not (0) 32 32 ln_rstart = .true. ! start from rest (F) or from a restart file (T) … … 140 140 nn_fsbc = 1 ! frequency of surface boundary condition computation 141 141 ! (also = the frequency of sea-ice model call) 142 ln_ana = .false 142 ln_ana = .false. ! analytical formulation (T => fill namsbc_ana ) 143 143 ln_flx = .true. ! flux formulation (T => fill namsbc_flx ) 144 144 ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) … … 218 218 cn_dir = './' ! root directory for the location of the bulk files 219 219 ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) 220 ln_bulk2z = .false. ! Air temperature/humidity and wind vectors are referenced at heights rn_zqt and rn_zu 221 rn_zqt = 3. ! Air temperature and humidity reference height (m) (ln_bulk2z) 222 rn_zu = 4. ! Wind vector reference height (m) (ln_bulk2z) 220 223 ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data 221 224 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) … … 466 469 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! 467 470 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 468 bn_ssh = 'amm12_bdyT_ u2d' , 24 , 'sossheig' , .true. , .false. , 'daily' , '' , ''469 bn_u2d = 'amm12_bdyU_ u2d' , 24 , 'vobtcrtx' , .true. , .false. , 'daily' , '' , ''470 bn_v2d = 'amm12_bdyV_ u2d' , 24 , 'vobtcrty' , .true. , .false. , 'daily' , '' , ''471 bn_u3d = 'amm12_bdyU_ u3d' , 24 , 'vozocrtx' , .true. , .false. , 'daily' , '' , ''472 bn_v3d = 'amm12_bdyV_ u3d' , 24 , 'vomecrty' , .true. , .false. , 'daily' , '' , ''471 bn_ssh = 'amm12_bdyT_dyn2d' , 24 , 'sossheig' , .true. , .false. , 'daily' , '' , '' 472 bn_u2d = 'amm12_bdyU_dyn2d' , 24 , 'vobtcrtx' , .true. , .false. , 'daily' , '' , '' 473 bn_v2d = 'amm12_bdyV_dyn2d' , 24 , 'vobtcrty' , .true. , .false. , 'daily' , '' , '' 474 bn_u3d = 'amm12_bdyU_dyn3d' , 24 , 'vozocrtx' , .true. , .false. , 'daily' , '' , '' 475 bn_v3d = 'amm12_bdyV_dyn3d' , 24 , 'vomecrty' , .true. , .false. , 'daily' , '' , '' 473 476 bn_tem = 'amm12_bdyT_tra' , 24 , 'votemper' , .true. , .false. , 'daily' , '' , '' 474 477 bn_sal = 'amm12_bdyT_tra' , 24 , 'vosaline' , .true. , .false. , 'daily' , '' , '' … … 771 774 !! namctl Control prints & Benchmark 772 775 !! namsol elliptic solver / island / free surface 776 !! namc1d 1D column configuration options ("key_c1d") 777 !! namc1d_uvd data: U & V currents ("key_c1d") 778 !! namc1d_dyndmp U & V newtonian damping ("key_c1d") 773 779 !!====================================================================== 774 780 ! … … 811 817 ! (no physical validity of the results) 812 818 nn_timing = 0 ! timing by routine activated (=1) creates timing.output file, or not (=0) 819 / 820 !----------------------------------------------------------------------- 821 &namc1d ! 1D configuration options ("key_c1d") 822 !----------------------------------------------------------------------- 823 rn_lat = 50 ! Column latitude 824 rn_lon = -145 ! Column longitude 825 / 826 !----------------------------------------------------------------------- 827 &namc1d_uvd ! data: U & V currents ("key_c1d") 828 !----------------------------------------------------------------------- 829 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! 830 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 831 sn_ucur = 'ucurrent', -1 ,'u_current', .false. ,.true. , 'monthly' , ' ' , 'Ume' 832 sn_vcur = 'vcurrent', -1 ,'v_current', .false. ,.true. , 'monthly' , ' ' , 'Vme' 833 ! 834 cn_dir = './' ! root directory for the location of the files 835 ln_uvd_init = .false. ! Initialisation of ocean U & V with U & V input data (T) or not (F) 836 ln_uvd_dyndmp = .false. ! damping of ocean U & V toward U & V input data (T) or not (F) 837 / 838 !----------------------------------------------------------------------- 839 &namc1d_dyndmp ! U & V newtonian damping ("key_c1d") 840 !----------------------------------------------------------------------- 841 ln_dyndmp = .false. ! add a damping term (T) or not (F) 813 842 / 814 843 -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/CONFIG/GYRE/EXP00/namelist
r3795 r4229 11 11 !! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) 12 12 !! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) 13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl )13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl, namc1d, namc1d_uvd, namc1d_dyndmp) 14 14 !! 11 - Obs & Assim (namobs, nam_asminc) 15 15 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 219 219 cn_dir = './' ! root directory for the location of the bulk files 220 220 ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) 221 ln_bulk2z = .false. ! Air temperature/humidity and wind vectors are referenced at heights rn_zqt and rn_zu 222 rn_zqt = 3. ! Air temperature and humidity reference height (m) (ln_bulk2z) 223 rn_zu = 4. ! Wind vector reference height (m) (ln_bulk2z) 221 224 ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data 222 225 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) … … 807 810 !! namctl Control prints & Benchmark 808 811 !! namsol elliptic solver / island / free surface 812 !! namc1d 1D column configuration options ("key_c1d") 813 !! namc1d_uvd data: U & V currents ("key_c1d") 814 !! namc1d_dyndmp U & V newtonian damping ("key_c1d") 809 815 !!====================================================================== 810 816 ! … … 847 853 ! (no physical validity of the results) 848 854 nn_timing = 0 ! timing by routine activated (=1) creates timing.output file, or not (=0) 855 / 856 !----------------------------------------------------------------------- 857 &namc1d ! 1D configuration options ("key_c1d") 858 !----------------------------------------------------------------------- 859 rn_lat = 50 ! Column latitude 860 rn_lon = -145 ! Column longitude 861 / 862 !----------------------------------------------------------------------- 863 &namc1d_uvd ! data: U & V currents ("key_c1d") 864 !----------------------------------------------------------------------- 865 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! 866 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 867 sn_ucur = 'ucurrent', -1 ,'u_current', .false. ,.true. , 'monthly' , ' ' , 'Ume' 868 sn_vcur = 'vcurrent', -1 ,'v_current', .false. ,.true. , 'monthly' , ' ' , 'Vme' 869 ! 870 cn_dir = './' ! root directory for the location of the files 871 ln_uvd_init = .false. ! Initialisation of ocean U & V with U & V input data (T) or not (F) 872 ln_uvd_dyndmp = .false. ! damping of ocean U & V toward U & V input data (T) or not (F) 873 / 874 !----------------------------------------------------------------------- 875 &namc1d_dyndmp ! U & V newtonian damping ("key_c1d") 876 !----------------------------------------------------------------------- 877 ln_dyndmp = .false. ! add a damping term (T) or not (F) 849 878 / 850 879 -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist
r3815 r4229 11 11 !! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) 12 12 !! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) 13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl )13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl, namc1d, namc1d_uvd, namc1d_dyndmp) 14 14 !! 11 - Obs & Assim (namobs, nam_asminc) 15 15 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 219 219 cn_dir = './' ! root directory for the location of the bulk files 220 220 ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) 221 ln_bulk2z = .false. ! Air temperature/humidity and wind vectors are referenced at heights rn_zqt and rn_zu 222 rn_zqt = 3. ! Air temperature and humidity reference height (m) (ln_bulk2z) 223 rn_zu = 4. ! Wind vector reference height (m) (ln_bulk2z) 221 224 ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data 222 225 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) … … 807 810 !! namctl Control prints & Benchmark 808 811 !! namsol elliptic solver / island / free surface 812 !! namc1d 1D column configuration options ("key_c1d") 813 !! namc1d_uvd data: U & V currents ("key_c1d") 814 !! namc1d_dyndmp U & V newtonian damping ("key_c1d") 809 815 !!====================================================================== 810 816 ! … … 847 853 ! (no physical validity of the results) 848 854 nn_timing = 0 ! timing by routine activated (=1) creates timing.output file, or not (=0) 855 / 856 !----------------------------------------------------------------------- 857 &namc1d ! 1D configuration options ("key_c1d") 858 !----------------------------------------------------------------------- 859 rn_lat = 50 ! Column latitude 860 rn_lon = -145 ! Column longitude 861 / 862 !----------------------------------------------------------------------- 863 &namc1d_uvd ! data: U & V currents ("key_c1d") 864 !----------------------------------------------------------------------- 865 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! 866 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 867 sn_ucur = 'ucurrent', -1 ,'u_current', .false. ,.true. , 'monthly' , ' ' , 'Ume' 868 sn_vcur = 'vcurrent', -1 ,'v_current', .false. ,.true. , 'monthly' , ' ' , 'Vme' 869 ! 870 cn_dir = './' ! root directory for the location of the files 871 ln_uvd_init = .false. ! Initialisation of ocean U & V with U & V input data (T) or not (F) 872 ln_uvd_dyndmp = .false. ! damping of ocean U & V toward U & V input data (T) or not (F) 873 / 874 !----------------------------------------------------------------------- 875 &namc1d_dyndmp ! U & V newtonian damping ("key_c1d") 876 !----------------------------------------------------------------------- 877 ln_dyndmp = .false. ! add a damping term (T) or not (F) 849 878 / 850 879 -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist
r3795 r4229 11 11 !! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) 12 12 !! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) 13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl )13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl, namc1d, namc1d_uvd, namc1d_dyndmp) 14 14 !! 11 - Obs & Assim (namobs, nam_asminc) 15 15 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 219 219 cn_dir = './' ! root directory for the location of the bulk files 220 220 ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) 221 ln_bulk2z = .false. ! Air temperature/humidity and wind vectors are referenced at heights rn_zqt and rn_zu 222 rn_zqt = 3. ! Air temperature and humidity reference height (m) (ln_bulk2z) 223 rn_zu = 4. ! Wind vector reference height (m) (ln_bulk2z) 221 224 ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data 222 225 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) … … 802 805 !! namctl Control prints & Benchmark 803 806 !! namsol elliptic solver / island / free surface 807 !! namc1d 1D column configuration options ("key_c1d") 808 !! namc1d_uvd data: U & V currents ("key_c1d") 809 !! namc1d_dyndmp U & V newtonian damping ("key_c1d") 804 810 !!====================================================================== 805 811 ! … … 842 848 ! (no physical validity of the results) 843 849 nn_timing = 0 ! timing by routine activated (=1) creates timing.output file, or not (=0) 850 / 851 !----------------------------------------------------------------------- 852 &namc1d ! 1D configuration options ("key_c1d") 853 !----------------------------------------------------------------------- 854 rn_lat = 50 ! Column latitude 855 rn_lon = -145 ! Column longitude 856 / 857 !----------------------------------------------------------------------- 858 &namc1d_uvd ! data: U & V currents ("key_c1d") 859 !----------------------------------------------------------------------- 860 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! 861 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 862 sn_ucur = 'ucurrent', -1 ,'u_current', .false. ,.true. , 'monthly' , ' ' , 'Ume' 863 sn_vcur = 'vcurrent', -1 ,'v_current', .false. ,.true. , 'monthly' , ' ' , 'Vme' 864 ! 865 cn_dir = './' ! root directory for the location of the files 866 ln_uvd_init = .false. ! Initialisation of ocean U & V with U & V input data (T) or not (F) 867 ln_uvd_dyndmp = .false. ! damping of ocean U & V toward U & V input data (T) or not (F) 868 / 869 !----------------------------------------------------------------------- 870 &namc1d_dyndmp ! U & V newtonian damping ("key_c1d") 871 !----------------------------------------------------------------------- 872 ln_dyndmp = .false. ! add a damping term (T) or not (F) 844 873 / 845 874 -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist
r3877 r4229 11 11 !! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) 12 12 !! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) 13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl )13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl, namc1d, namc1d_uvd, namc1d_dyndmp) 14 14 !! 11 - Obs & Assim (namobs, nam_asminc) 15 15 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 201 201 cn_dir = './' ! root directory for the location of the bulk files 202 202 ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) 203 ln_bulk2z = .false. ! Air temperature/humidity and wind vectors are referenced at heights rn_zqt and rn_zu 204 rn_zqt = 3. ! Air temperature and humidity reference height (m) (ln_bulk2z) 205 rn_zu = 4. ! Wind vector reference height (m) (ln_bulk2z) 203 206 ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data 204 207 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) … … 782 785 !! namctl Control prints & Benchmark 783 786 !! namsol elliptic solver / island / free surface 787 !! namc1d 1D column configuration options ("key_c1d") 788 !! namc1d_uvd data: U & V currents ("key_c1d") 789 !! namc1d_dyndmp U & V newtonian damping ("key_c1d") 784 790 !!====================================================================== 785 791 ! … … 822 828 ! (no physical validity of the results) 823 829 nn_timing = 0 ! timing by routine activated (=1) creates timing.output file, or not (=0) 830 / 831 !----------------------------------------------------------------------- 832 &namc1d ! 1D configuration options ("key_c1d") 833 !----------------------------------------------------------------------- 834 rn_lat = 50 ! Column latitude 835 rn_lon = -145 ! Column longitude 836 / 837 !----------------------------------------------------------------------- 838 &namc1d_uvd ! data: U & V currents ("key_c1d") 839 !----------------------------------------------------------------------- 840 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! 841 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 842 sn_ucur = 'ucurrent', -1 ,'u_current', .false. ,.true. , 'monthly' , ' ' , 'Ume' 843 sn_vcur = 'vcurrent', -1 ,'v_current', .false. ,.true. , 'monthly' , ' ' , 'Vme' 844 ! 845 cn_dir = './' ! root directory for the location of the files 846 ln_uvd_init = .false. ! Initialisation of ocean U & V with U & V input data (T) or not (F) 847 ln_uvd_dyndmp = .false. ! damping of ocean U & V toward U & V input data (T) or not (F) 848 / 849 !----------------------------------------------------------------------- 850 &namc1d_dyndmp ! U & V newtonian damping ("key_c1d") 851 !----------------------------------------------------------------------- 852 ln_dyndmp = .false. ! add a damping term (T) or not (F) 824 853 / 825 854 -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist
r3905 r4229 11 11 !! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) 12 12 !! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) 13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl )13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl, namc1d, namc1d_uvd, namc1d_dyndmp) 14 14 !! 11 - Obs & Assim (namobs, nam_asminc) 15 15 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 218 218 cn_dir = './' ! root directory for the location of the bulk files 219 219 ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) 220 ln_bulk2z = .false. ! Air temperature/humidity and wind vectors are referenced at heights rn_zqt and rn_zu 221 rn_zqt = 3. ! Air temperature and humidity reference height (m) (ln_bulk2z) 222 rn_zu = 4. ! Wind vector reference height (m) (ln_bulk2z) 220 223 ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data 221 224 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) … … 803 806 !! namctl Control prints & Benchmark 804 807 !! namsol elliptic solver / island / free surface 808 !! namc1d 1D column configuration options ("key_c1d") 809 !! namc1d_uvd data: U & V currents ("key_c1d") 810 !! namc1d_dyndmp U & V newtonian damping ("key_c1d") 805 811 !!====================================================================== 806 812 ! … … 843 849 ! (no physical validity of the results) 844 850 nn_timing = 0 ! timing by routine activated (=1) creates timing.output file, or not (=0) 851 / 852 !----------------------------------------------------------------------- 853 &namc1d ! 1D configuration options ("key_c1d") 854 !----------------------------------------------------------------------- 855 rn_lat = 50 ! Column latitude 856 rn_lon = -145 ! Column longitude 857 / 858 !----------------------------------------------------------------------- 859 &namc1d_uvd ! data: U & V currents ("key_c1d") 860 !----------------------------------------------------------------------- 861 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! 862 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 863 sn_ucur = 'ucurrent', -1 ,'u_current', .false. ,.true. , 'monthly' , ' ' , 'Ume' 864 sn_vcur = 'vcurrent', -1 ,'v_current', .false. ,.true. , 'monthly' , ' ' , 'Vme' 865 ! 866 cn_dir = './' ! root directory for the location of the files 867 ln_uvd_init = .false. ! Initialisation of ocean U & V with U & V input data (T) or not (F) 868 ln_uvd_dyndmp = .false. ! damping of ocean U & V toward U & V input data (T) or not (F) 869 / 870 !----------------------------------------------------------------------- 871 &namc1d_dyndmp ! U & V newtonian damping ("key_c1d") 872 !----------------------------------------------------------------------- 873 ln_dyndmp = .false. ! add a damping term (T) or not (F) 845 874 / 846 875 -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/CONFIG/ORCA2_SAS_LIM/EXP00/namelist
r3795 r4229 11 11 !! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) 12 12 !! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) 13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl )13 !! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl, namc1d, namc1d_uvd, namc1d_dyndmp) 14 14 !! 11 - Obs & Assim (namobs, nam_asminc) 15 15 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 216 216 cn_dir = './' ! root directory for the location of the bulk files 217 217 ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) 218 ln_bulk2z = .false. ! Air temperature/humidity and wind vectors are referenced at heights rn_zqt and rn_zu 219 rn_zqt = 3. ! Air temperature and humidity reference height (m) (ln_bulk2z) 220 rn_zu = 4. ! Wind vector reference height (m) (ln_bulk2z) 218 221 ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data 219 222 rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) … … 798 801 !! namctl Control prints & Benchmark 799 802 !! namsol elliptic solver / island / free surface 803 !! namc1d 1D column configuration options ("key_c1d") 804 !! namc1d_uvd data: U & V currents ("key_c1d") 805 !! namc1d_dyndmp U & V newtonian damping ("key_c1d") 800 806 !!====================================================================== 801 807 ! … … 838 844 ! (no physical validity of the results) 839 845 nn_timing = 1 ! timing by routine activated (=1) creates timing.output file, or not (=0) 846 / 847 !----------------------------------------------------------------------- 848 &namc1d ! 1D configuration options ("key_c1d") 849 !----------------------------------------------------------------------- 850 rn_lat = 50 ! Column latitude 851 rn_lon = -145 ! Column longitude 852 / 853 !----------------------------------------------------------------------- 854 &namc1d_uvd ! data: U & V currents ("key_c1d") 855 !----------------------------------------------------------------------- 856 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim !'yearly' or ! weights ! rotation ! 857 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! 858 sn_ucur = 'ucurrent', -1 ,'u_current', .false. ,.true. , 'monthly' , ' ' , 'Ume' 859 sn_vcur = 'vcurrent', -1 ,'v_current', .false. ,.true. , 'monthly' , ' ' , 'Vme' 860 ! 861 cn_dir = './' ! root directory for the location of the files 862 ln_uvd_init = .false. ! Initialisation of ocean U & V with U & V input data (T) or not (F) 863 ln_uvd_dyndmp = .false. ! damping of ocean U & V toward U & V input data (T) or not (F) 864 / 865 !----------------------------------------------------------------------- 866 &namc1d_dyndmp ! U & V newtonian damping ("key_c1d") 867 !----------------------------------------------------------------------- 868 ln_dyndmp = .false. ! add a damping term (T) or not (F) 840 869 / 841 870 -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r4070 r4229 1016 1016 #endif 1017 1017 1018 #if defined key_cice 1018 #if defined key_cice && defined key_asminc 1019 1019 ! Sea-ice : CICE case. Pass ice increment tendency into CICE 1020 1020 ndaice_da(:,:) = seaice_bkginc(:,:) * zincwgt / rdt … … 1027 1027 ELSE 1028 1028 1029 #if defined key_cice 1029 #if defined key_cice && defined key_asminc 1030 1030 ! Sea-ice : CICE case. Zero ice increment tendency into CICE 1031 1031 ndaice_da(:,:) = 0.0_wp … … 1071 1071 #endif 1072 1072 1073 #if defined key_cice 1074 ! Sea-ice : CICE case. Pass ice increment tendency into CICE - is this correct?1073 #if defined key_cice && defined key_asminc 1074 ! Sea-ice : CICE case. Pass ice increment tendency into CICE 1075 1075 ndaice_da(:,:) = seaice_bkginc(:,:) / rdt 1076 1076 #endif … … 1081 1081 ELSE 1082 1082 1083 #if defined key_cice 1083 #if defined key_cice && defined key_asminc 1084 1084 ! Sea-ice : CICE case. Zero ice increment tendency into CICE 1085 1085 ndaice_da(:,:) = 0.0_wp -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/C1D/c1d.F90
r2409 r4229 4 4 !! Ocean domain : 1D configuration 5 5 !!===================================================================== 6 !! History : 2.0 ! 2004-09 (C. Ethe) Original code 7 !! 3.0 ! 2008-04 (G. Madec) adaptation to SBC 6 !! History : 2.0 ! 2004-09 (C. Ethe) Original code 7 !! 3.0 ! 2008-04 (G. Madec) adaptation to SBC 8 !! 3.5 ! 2013-10 (D. Calvert) add namelist 8 9 !!---------------------------------------------------------------------- 10 #if defined key_c1d 11 !!---------------------------------------------------------------------- 12 !! 'key_c1d' 1D column configuration 13 !!---------------------------------------------------------------------- 14 !! c1d_init : read in the C1D namelist 15 !!---------------------------------------------------------------------- 16 USE in_out_manager ! I/O manager 17 USE par_kind ! kind parameters 9 18 10 19 IMPLICIT NONE 11 20 PRIVATE 12 21 13 #if defined key_c1d 14 LOGICAL, PUBLIC, PARAMETER :: lk_c1d = .TRUE. !: 1D config. flag activated 15 #else 16 LOGICAL, PUBLIC, PARAMETER :: lk_c1d = .FALSE. !: 1D config. flag de-activated 17 #endif 22 PUBLIC c1d_init ! called by nemogcm.F90 23 24 LOGICAL , PUBLIC, PARAMETER :: lk_c1d = .TRUE. ! 1D config. flag 25 26 REAL(wp), PUBLIC :: rn_lat = 50 ! Column latitude 27 REAL(wp), PUBLIC :: rn_lon = -145 ! Column longitude 18 28 19 29 !!---------------------------------------------------------------------- … … 22 32 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 23 33 !!====================================================================== 34 CONTAINS 35 36 SUBROUTINE c1d_init 37 !!---------------------------------------------------------------------- 38 !! *** ROUTINE c1d_init *** 39 !! 40 !! ** Purpose : Initialization of C1D options 41 !! 42 !! ** Method : Read namelist namc1d 43 !!---------------------------------------------------------------------- 44 NAMELIST/namc1d/ rn_lat, rn_lon 45 !!---------------------------------------------------------------------- 46 ! 47 REWIND ( numnam ) ! Read C1D options from namelist 48 READ ( numnam, namc1d ) 49 ! 50 IF(lwp) THEN ! Control print 51 WRITE(numout,*) 52 WRITE(numout,*) 'c1d_init : Initialize 1D model configuration options' 53 WRITE(numout,*) '~~~~~~~~' 54 WRITE(numout,*) ' Namelist namc1d : set options for the C1D model' 55 WRITE(numout,*) ' column latitude rn_lat = ', rn_lat 56 WRITE(numout,*) ' column longitude rn_lon = ', rn_lon 57 ENDIF 58 ! 59 ! 60 END SUBROUTINE c1d_init 61 62 #else 63 !!---------------------------------------------------------------------- 64 !! Dummy module : No use of 1D configuration 65 !!---------------------------------------------------------------------- 66 LOGICAL, PUBLIC, PARAMETER :: lk_c1d = .FALSE. !: 1D config. flag de-activated 67 REAL :: rn_lat, rn_lon 68 CONTAINS 69 70 SUBROUTINE c1d_init ! Dummy routine 71 END SUBROUTINE c1d_init 72 73 #endif 74 75 !!====================================================================== 24 76 END MODULE c1d -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/C1D/step_c1d.F90
r3971 r4229 13 13 !! stp_c1d : NEMO system time-stepping in c1d case 14 14 !!---------------------------------------------------------------------- 15 USE step_oce 15 USE step_oce ! time stepping definition modules 16 16 #if defined key_top 17 USE trcstp 17 USE trcstp ! passive tracer time-stepping (trc_stp routine) 18 18 #endif 19 19 USE dyncor_c1d ! Coriolis term (c1d case) (dyn_cor_1d ) 20 20 USE dynnxt_c1d ! time-stepping (dyn_nxt routine) 21 USE dyndmp ! U & V momentum damping (dyn_dmp routine) 21 22 USE restart ! restart 22 23 … … 124 125 CALL tra_sbc ( kstp ) ! surface boundary condition 125 126 IF( ln_traqsr ) CALL tra_qsr ( kstp ) ! penetrative solar radiation qsr 127 IF( ln_tradmp ) CALL tra_dmp ( kstp ) ! internal damping trends- tracers 126 128 IF( lk_zdfkpp ) CALL tra_kpp ( kstp ) ! KPP non-local tracer fluxes 127 129 CALL tra_zdf ( kstp ) ! vertical mixing … … 136 138 va(:,:,:) = 0.e0 137 139 140 IF( ln_dyndmp ) CALL dyn_dmp ( kstp ) ! internal damping trends- momentum 138 141 CALL dyn_cor_c1d( kstp ) ! vorticity term including Coriolis 139 142 CALL dyn_zdf ( kstp ) ! vertical diffusion -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/DOM/domcfg.F90
r3294 r4229 16 16 USE lib_mpp ! distributed memory computing library 17 17 USE timing ! Timing 18 USE c1d ! 1D configuration 19 USE domc1d ! 1D configuration: column location 18 20 19 21 IMPLICIT NONE … … 80 82 !!---------------------------------------------------------------------- 81 83 84 ! ! recalculate jpizoom/jpjzoom given lat/lon 85 IF( lk_c1d ) CALL dom_c1d( rn_lat, rn_lon ) 86 ! 82 87 ! ! ============== ! 83 88 ! ! Local domain ! -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r4228 r4229 1173 1173 ! ! ============================= 1174 1174 ! use r-value to create hybrid coordinates 1175 zenv(:,:) = bathy(:,:) 1176 ! 1177 ! set first land point adjacent to a wet cell to sbot_min as this needs to be included in smoothing 1175 1178 DO jj = 1, jpj 1176 1179 DO ji = 1, jpi 1177 zenv(ji,jj) = MAX( bathy(ji,jj), rn_sbot_min ) 1178 END DO 1179 END DO 1180 IF( bathy(ji,jj) == 0._wp ) THEN 1181 iip1 = MIN( ji+1, jpi ) 1182 ijp1 = MIN( jj+1, jpj ) 1183 iim1 = MAX( ji-1, 1 ) 1184 ijm1 = MAX( jj-1, 1 ) 1185 IF( (bathy(iip1,jj) + bathy(iim1,jj) + bathy(ji,ijp1) + bathy(ji,ijm1) + & 1186 & bathy(iip1,ijp1) + bathy(iim1,ijm1) + bathy(iip1,ijp1) + bathy(iim1,ijm1)) > 0._wp ) THEN 1187 zenv(ji,jj) = rn_sbot_min 1188 ENDIF 1189 ENDIF 1190 END DO 1191 END DO 1192 ! apply lateral boundary condition CAUTION: keep the value when the lbc field is zero 1193 CALL lbc_lnk( zenv, 'T', 1._wp, 'no0' ) 1180 1194 ! 1181 ! Smooth the bathymetry (if required)1195 ! smooth the bathymetry (if required) 1182 1196 scosrf(:,:) = 0._wp ! ocean surface depth (here zero: no under ice-shelf sea) 1183 1197 scobot(:,:) = bathy(:,:) ! ocean bottom depth … … 1185 1199 jl = 0 1186 1200 zrmax = 1._wp 1187 ! ! ================ ! 1188 DO WHILE( jl <= 10000 .AND. zrmax > rn_rmax ) ! Iterative loop ! 1189 ! ! ================ ! 1201 ! 1202 ! 1203 ! set scaling factor used in reducing vertical gradients 1204 zrfact = ( 1._wp - rn_rmax ) / ( 1._wp + rn_rmax ) 1205 ! 1206 ! initialise temporary evelope depth arrays 1207 ztmpi1(:,:) = zenv(:,:) 1208 ztmpi2(:,:) = zenv(:,:) 1209 ztmpj1(:,:) = zenv(:,:) 1210 ztmpj2(:,:) = zenv(:,:) 1211 ! 1212 ! initialise temporary r-value arrays 1213 zri(:,:) = 1._wp 1214 zrj(:,:) = 1._wp 1215 ! ! ================ ! 1216 DO WHILE( jl <= 10000 .AND. ( zrmax - rn_rmax ) > 1.e-8_wp ) ! Iterative loop ! 1217 ! ! ================ ! 1190 1218 jl = jl + 1 1191 1219 zrmax = 0._wp 1192 zmsk(:,:) = 0._wp 1220 ! we set zrmax from previous r-values (zri and zrj) first 1221 ! if set after current r-value calculation (as previously) 1222 ! we could exit DO WHILE prematurely before checking r-value 1223 ! of current zenv 1224 DO jj = 1, nlcj 1225 DO ji = 1, nlci 1226 zrmax = MAX( zrmax, ABS(zri(ji,jj)), ABS(zrj(ji,jj)) ) 1227 END DO 1228 END DO 1229 zri(:,:) = 0._wp 1230 zrj(:,:) = 0._wp 1193 1231 DO jj = 1, nlcj 1194 1232 DO ji = 1, nlci 1195 1233 iip1 = MIN( ji+1, nlci ) ! force zri = 0 on last line (ji=ncli+1 to jpi) 1196 1234 ijp1 = MIN( jj+1, nlcj ) ! force zrj = 0 on last raw (jj=nclj+1 to jpj) 1197 zri(ji,jj) = ABS( zenv(iip1,jj ) - zenv(ji,jj) ) / ( zenv(iip1,jj ) + zenv(ji,jj) ) 1198 zrj(ji,jj) = ABS( zenv(ji ,ijp1) - zenv(ji,jj) ) / ( zenv(ji ,ijp1) + zenv(ji,jj) ) 1199 zrmax = MAX( zrmax, zri(ji,jj), zrj(ji,jj) ) 1200 IF( zri(ji,jj) > rn_rmax ) zmsk(ji ,jj ) = 1._wp 1201 IF( zri(ji,jj) > rn_rmax ) zmsk(iip1,jj ) = 1._wp 1202 IF( zrj(ji,jj) > rn_rmax ) zmsk(ji ,jj ) = 1._wp 1203 IF( zrj(ji,jj) > rn_rmax ) zmsk(ji ,ijp1) = 1._wp 1235 IF( (zenv(ji,jj) > 0._wp) .AND. (zenv(iip1,jj) > 0._wp)) THEN 1236 zri(ji,jj) = ( zenv(iip1,jj ) - zenv(ji,jj) ) / ( zenv(iip1,jj ) + zenv(ji,jj) ) 1237 END IF 1238 IF( (zenv(ji,jj) > 0._wp) .AND. (zenv(ji,ijp1) > 0._wp)) THEN 1239 zrj(ji,jj) = ( zenv(ji ,ijp1) - zenv(ji,jj) ) / ( zenv(ji ,ijp1) + zenv(ji,jj) ) 1240 END IF 1241 IF( zri(ji,jj) > rn_rmax ) ztmpi1(ji ,jj ) = zenv(iip1,jj ) * zrfact 1242 IF( zri(ji,jj) < -rn_rmax ) ztmpi2(iip1,jj ) = zenv(ji ,jj ) * zrfact 1243 IF( zrj(ji,jj) > rn_rmax ) ztmpj1(ji ,jj ) = zenv(ji ,ijp1) * zrfact 1244 IF( zrj(ji,jj) < -rn_rmax ) ztmpj2(ji ,ijp1) = zenv(ji ,jj ) * zrfact 1204 1245 END DO 1205 1246 END DO 1206 1247 IF( lk_mpp ) CALL mpp_max( zrmax ) ! max over the global domain 1207 ! lateral boundary condition on zmsk: keep 1 along closed boundary (use of MAX)1208 ztmp(:,:) = zmsk(:,:) ; CALL lbc_lnk( zmsk, 'T', 1._wp )1209 DO jj = 1, nlcj1210 DO ji = 1, nlci1211 zmsk(ji,jj) = MAX( zmsk(ji,jj), ztmp(ji,jj) )1212 END DO1213 END DO1214 1248 ! 1215 IF(lwp)WRITE(numout,*) 'zgr_sco : iter= ',jl, ' rmax= ', zrmax , ' nb of pt= ', INT( SUM(zmsk(:,:) ) )1249 IF(lwp)WRITE(numout,*) 'zgr_sco : iter= ',jl, ' rmax= ', zrmax 1216 1250 ! 1217 1251 DO jj = 1, nlcj 1218 1252 DO ji = 1, nlci 1219 iip1 = MIN( ji+1, nlci ) ! last line (ji=nlci) 1220 ijp1 = MIN( jj+1, nlcj ) ! last raw (jj=nlcj) 1221 iim1 = MAX( ji-1, 1 ) ! first line (ji=nlci) 1222 ijm1 = MAX( jj-1, 1 ) ! first raw (jj=nlcj) 1223 IF( zmsk(ji,jj) == 1._wp ) THEN 1224 ztmp(ji,jj) = ( & 1225 & zenv(iim1,ijp1)*zmsk(iim1,ijp1) + zenv(ji,ijp1)*zmsk(ji,ijp1) + zenv(iip1,ijp1)*zmsk(iip1,ijp1) & 1226 & + zenv(iim1,jj )*zmsk(iim1,jj ) + zenv(ji,jj )* 2._wp + zenv(iip1,jj )*zmsk(iip1,jj ) & 1227 & + zenv(iim1,ijm1)*zmsk(iim1,ijm1) + zenv(ji,ijm1)*zmsk(ji,ijm1) + zenv(iip1,ijm1)*zmsk(iip1,ijm1) & 1228 & ) / ( & 1229 & zmsk(iim1,ijp1) + zmsk(ji,ijp1) + zmsk(iip1,ijp1) & 1230 & + zmsk(iim1,jj ) + 2._wp + zmsk(iip1,jj ) & 1231 & + zmsk(iim1,ijm1) + zmsk(ji,ijm1) + zmsk(iip1,ijm1) & 1232 & ) 1233 ENDIF 1234 END DO 1235 END DO 1236 ! 1237 DO jj = 1, nlcj 1238 DO ji = 1, nlci 1239 IF( zmsk(ji,jj) == 1._wp ) zenv(ji,jj) = MAX( ztmp(ji,jj), bathy(ji,jj) ) 1240 END DO 1241 END DO 1242 ! 1243 ! Apply lateral boundary condition CAUTION: keep the value when the lbc field is zero 1244 ztmp(:,:) = zenv(:,:) ; CALL lbc_lnk( zenv, 'T', 1._wp ) 1245 DO jj = 1, nlcj 1246 DO ji = 1, nlci 1247 IF( zenv(ji,jj) == 0._wp ) zenv(ji,jj) = ztmp(ji,jj) 1248 END DO 1249 END DO 1253 zenv(ji,jj) = MAX(zenv(ji,jj), ztmpi1(ji,jj), ztmpi2(ji,jj), ztmpj1(ji,jj), ztmpj2(ji,jj) ) 1254 END DO 1255 END DO 1256 ! apply lateral boundary condition CAUTION: keep the value when the lbc field is zero 1257 CALL lbc_lnk( zenv, 'T', 1._wp, 'no0' ) 1250 1258 ! ! ================ ! 1251 1259 END DO ! End loop ! 1252 1260 ! ! ================ ! 1253 ! 1254 ! Fill ghost rows with appropriate values to avoid undefined e3 values with some mpp decompositions 1255 DO ji = nlci+1, jpi 1256 zenv(ji,1:nlcj) = zenv(nlci,1:nlcj) 1257 END DO 1258 ! 1259 DO jj = nlcj+1, jpj 1260 zenv(:,jj) = zenv(:,nlcj) 1261 DO jj = 1, jpj 1262 DO ji = 1, jpi 1263 zenv(ji,jj) = MAX( zenv(ji,jj), rn_sbot_min ) ! set all points to avoid undefined scale value warnings 1264 END DO 1261 1265 END DO 1262 1266 ! … … 1536 1540 END DO 1537 1541 ! 1538 CALL wrk_dealloc( jpi, jpj, zenv, ztmp , zmsk, zri, zrj, zhbat )1542 CALL wrk_dealloc( jpi, jpj, zenv, ztmpi1, ztmpi2, ztmpj1, ztmpj2, zri, zrj, zhbat ) ! 1539 1543 ! 1540 1544 IF( nn_timing == 1 ) CALL timing_stop('zgr_sco') -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r4228 r4229 26 26 USE oce ! ocean dynamics and active tracers 27 27 USE dom_oce ! ocean space and time domain 28 USE c1d ! 1D vertical configuration 28 29 USE daymod ! calendar 29 30 USE eosbn2 ! eq. of state, Brunt Vaisala frequency (eos routine) … … 32 33 USE phycst ! physical constants 33 34 USE dtatsd ! data temperature and salinity (dta_tsd routine) 35 USE dtauvd ! data: U & V current (dta_uvd routine) 34 36 USE in_out_manager ! I/O manager 35 37 USE iom ! I/O library … … 70 72 ! - ML - needed for initialization of e3t_b 71 73 INTEGER :: jk ! dummy loop indice 74 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zuvd ! U & V data workspace 72 75 !!---------------------------------------------------------------------- 73 76 ! … … 80 83 81 84 CALL dta_tsd_init ! Initialisation of T & S input data 85 IF( lk_c1d ) CALL dta_uvd_init ! Initialization of U & V input data 82 86 83 87 rhd (:,:,: ) = 0.e0 … … 111 115 ELSEIF( cp_cfg == 'gyre' ) THEN 112 116 CALL istate_gyre ! GYRE configuration : start from pre-defined T-S fields 113 ELSEIF( ln_tsd_init ) THEN ! Initial T-S fields read in files 114 CALL dta_tsd( nit000, tsb ) ! read 3D T and S data at nit000 115 tsn(:,:,:,:) = tsb(:,:,:,:) 116 ! 117 ELSE ! Initial T-S fields defined analytically 118 CALL istate_t_s 117 ELSE ! Initial T-S, U-V fields read in files 118 IF ( ln_tsd_init ) THEN ! read 3D T and S data at nit000 119 CALL dta_tsd( nit000, tsb ) 120 tsn(:,:,:,:) = tsb(:,:,:,:) 121 ! 122 ELSE ! Initial T-S fields defined analytically 123 CALL istate_t_s 124 ENDIF 125 IF ( ln_uvd_init .AND. lk_c1d ) THEN ! read 3D U and V data at nit000 126 CALL wrk_alloc( jpi, jpj, jpk, 2, zuvd ) 127 CALL dta_uvd( nit000, zuvd ) 128 ub(:,:,:) = zuvd(:,:,:,1) ; un(:,:,:) = ub(:,:,:) 129 vb(:,:,:) = zuvd(:,:,:,2) ; vn(:,:,:) = vb(:,:,:) 130 CALL wrk_dealloc( jpi, jpj, jpk, 2, zuvd ) 131 ENDIF 119 132 ENDIF 120 133 ! -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r3625 r4229 14 14 USE oce ! ocean dynamics and tracers variables 15 15 USE dom_oce ! ocean space and time domain variables 16 USE c1d ! 1D vertical configuration 16 17 USE phycst ! physical constants 17 18 USE sbc_oce ! surface boundary condition: ocean … … 220 221 IF(lk_dynspg_flt) ioptio = ioptio + 1 221 222 ! 222 IF( ( ioptio > 1 .AND. .NOT. lk_esopa ) .OR. ioptio == 0) &223 IF( ( ioptio > 1 .AND. .NOT. lk_esopa ) .OR. ( ioptio == 0 .AND. .NOT. lk_c1d ) ) & 223 224 & CALL ctl_stop( ' Choose only one surface pressure gradient scheme with a key cpp' ) 224 225 ! -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r3983 r4229 463 463 !! INTERFACE iom_get 464 464 !!---------------------------------------------------------------------- 465 SUBROUTINE iom_g0d( kiomid, cdvar, pvar )465 SUBROUTINE iom_g0d( kiomid, cdvar, pvar, ktime ) 466 466 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 467 467 CHARACTER(len=*), INTENT(in ) :: cdvar ! Name of the variable 468 468 REAL(wp) , INTENT( out) :: pvar ! read field 469 ! 470 INTEGER :: idvar ! variable id 469 INTEGER , INTENT(in ), OPTIONAL :: ktime ! record number 470 ! 471 INTEGER :: idvar ! variable id 472 INTEGER :: idmspc ! number of spatial dimensions 473 INTEGER , DIMENSION(1) :: itime ! record number 474 CHARACTER(LEN=100) :: clinfo ! info character 475 CHARACTER(LEN=100) :: clname ! file name 476 CHARACTER(LEN=1) :: cldmspc ! 477 ! 478 itime = 1 479 IF( PRESENT(ktime) ) itime = ktime 480 ! 481 clname = iom_file(kiomid)%name 482 clinfo = ' iom_g0d, file: '//trim(clname)//', var: '//trim(cdvar) 471 483 ! 472 484 IF( kiomid > 0 ) THEN 473 485 idvar = iom_varid( kiomid, cdvar ) 474 486 IF( iom_file(kiomid)%nfid > 0 .AND. idvar > 0 ) THEN 487 idmspc = iom_file ( kiomid )%ndims( idvar ) 488 IF( iom_file(kiomid)%luld(idvar) ) idmspc = idmspc - 1 489 WRITE(cldmspc , fmt='(i1)') idmspc 490 IF( idmspc > 0 ) CALL ctl_stop( TRIM(clinfo), 'When reading to a 0D array, we do not accept data', & 491 & 'with 1 or more spatial dimensions: '//cldmspc//' were found.' , & 492 & 'Use ncwa -a to suppress the unnecessary dimensions' ) 475 493 SELECT CASE (iom_file(kiomid)%iolib) 476 CASE (jpioipsl ) ; CALL iom_ioipsl_get( kiomid, idvar, pvar )477 CASE (jpnf90 ) ; CALL iom_nf90_get( kiomid, idvar, pvar )494 CASE (jpioipsl ) ; CALL iom_ioipsl_get( kiomid, idvar, pvar, itime ) 495 CASE (jpnf90 ) ; CALL iom_nf90_get( kiomid, idvar, pvar, itime ) 478 496 CASE (jprstdimg) ; CALL iom_rstdimg_get( kiomid, idvar, pvar ) 479 497 CASE DEFAULT … … 640 658 ELSE 641 659 CALL ctl_stop( TRIM(clinfo), 'To keep iom lisibility, when reading a '//clrankpv//'D array,' , & 642 & 'we do not accept data with more than '//cldmspc//' spatial dimension', &660 & 'we do not accept data with '//cldmspc//' spatial dimensions', & 643 661 & 'Use ncwa -a to suppress the unnecessary dimensions' ) 644 662 ENDIF … … 752 770 753 771 IF( istop == nstop ) THEN ! no additional errors until this point... 754 IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i 4,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name)772 IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i6,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 755 773 756 774 !--- overlap areas and extra hallows (mpp) -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom_ioipsl.F90
r2715 r4229 170 170 iom_file(kiomid)%cn_var(kiv) = TRIM(cdvar) 171 171 iom_file(kiomid)%ndims(kiv) = i_nvd 172 iom_file(kiomid)%dimsz(:,kiv) = 0 ! reset dimsz in case previously used 172 173 CALL flioinqv( ioipslid, cdvar, ll_fnd, & 173 174 & len_dims = iom_file(kiomid)%dimsz(1:i_nvd,kiv), & ! dimensions size … … 210 211 211 212 212 SUBROUTINE iom_ioipsl_g0d( kiomid, kvid, pvar )213 SUBROUTINE iom_ioipsl_g0d( kiomid, kvid, pvar, kstart ) 213 214 !!----------------------------------------------------------------------- 214 215 !! *** ROUTINE iom_ioipsl_g0d *** … … 216 217 !! ** Purpose : read a scalar with IOIPSL (only fliocom module) 217 218 !!----------------------------------------------------------------------- 218 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 219 INTEGER , INTENT(in ) :: kvid ! variable id 220 REAL(wp), INTENT( out) :: pvar ! read field 221 ! 222 CALL fliogetv( iom_file(kiomid)%nfid, TRIM(iom_file(kiomid)%cn_var(kvid)), pvar ) 219 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 220 INTEGER , INTENT(in ) :: kvid ! variable id 221 REAL(wp), INTENT( out) :: pvar ! read field 222 INTEGER , DIMENSION(1), INTENT(in ), OPTIONAL :: kstart ! start position of the reading in each axis 223 ! 224 CALL fliogetv( iom_file(kiomid)%nfid, TRIM(iom_file(kiomid)%cn_var(kvid)), pvar, kstart ) 223 225 ! 224 226 END SUBROUTINE iom_ioipsl_g0d -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90
r2715 r4229 216 216 CALL iom_nf90_check(NF90_Inquire_Variable(if90id, ivarid, dimids = idimid(1:i_nvd)), clinfo) ! dimensions ids 217 217 iom_file(kiomid)%luld(kiv) = .FALSE. ! default value 218 iom_file(kiomid)%dimsz(:,kiv) = 0 ! reset dimsz in case previously used 218 219 DO ji = 1, i_nvd ! dimensions size 219 220 CALL iom_nf90_check(NF90_Inquire_Dimension(if90id, idimid(ji), len = iom_file(kiomid)%dimsz(ji,kiv)), clinfo) … … 249 250 250 251 251 SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar )252 SUBROUTINE iom_nf90_g0d( kiomid, kvid, pvar, kstart ) 252 253 !!----------------------------------------------------------------------- 253 254 !! *** ROUTINE iom_nf90_g0d *** … … 255 256 !! ** Purpose : read a scalar with NF90 256 257 !!----------------------------------------------------------------------- 257 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 258 INTEGER , INTENT(in ) :: kvid ! variable id 259 REAL(wp), INTENT( out) :: pvar ! read field 258 INTEGER , INTENT(in ) :: kiomid ! Identifier of the file 259 INTEGER , INTENT(in ) :: kvid ! variable id 260 REAL(wp), INTENT( out) :: pvar ! read field 261 INTEGER , DIMENSION(1), INTENT(in ), OPTIONAL :: kstart ! start position of the reading in each axis 260 262 ! 261 263 CHARACTER(LEN=100) :: clinfo ! info character 262 264 !--------------------------------------------------------------------- 263 265 clinfo = 'iom_nf90_g0d , file: '//TRIM(iom_file(kiomid)%name)//', var: '//TRIM(iom_file(kiomid)%cn_var(kvid)) 264 CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), pvar ), clinfo )266 CALL iom_nf90_check(NF90_GET_VAR(iom_file(kiomid)%nfid, iom_file(kiomid)%nvid(kvid), pvar, start = kstart), clinfo ) 265 267 ! 266 268 END SUBROUTINE iom_nf90_g0d -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r3651 r4229 21 21 USE par_oce 22 22 USE dom_oce ! Ocean space and time domain variables 23 USE obs_fbm, ONLY: ln_cl4 ! Class 4 diagnostic switch 23 24 USE obs_read_prof ! Reading and allocation of observations (Coriolis) 24 25 USE obs_read_sla ! Reading and allocation of SLA observations … … 48 49 PUBLIC dia_obs_init, & ! Initialize and read observations 49 50 & dia_obs, & ! Compute model equivalent to observations 50 & dia_obs_wri ! Write model equivalent to observations 51 & dia_obs_wri, & ! Write model equivalent to observations 52 & dia_obs_dealloc ! Deallocate dia_obs data 51 53 52 54 !! * Shared Module variables … … 80 82 LOGICAL, PUBLIC :: ln_ssh !: Logical switch for sea surface height 81 83 LOGICAL, PUBLIC :: ln_sss !: Logical switch for sea surface salinity 84 LOGICAL, PUBLIC :: ln_sstnight !: Logical switch for night mean SST observations 82 85 LOGICAL, PUBLIC :: ln_nea !: Remove observations near land 83 86 LOGICAL, PUBLIC :: ln_altbias !: Logical switch for altimeter bias … … 167 170 & nmsshc, mdtcorr, mdtcutoff, & 168 171 & ln_reysst, ln_ghrsst, reysstname, reysstfmt, & 172 & ln_sstnight, & 169 173 & ln_grid_search_lookup, & 170 174 & grid_search_file, grid_search_res, & … … 176 180 & ln_velhradcp, velhradcpfiles, & 177 181 & ln_velfb, velfbfiles, ln_velfb_av, & 178 & ln_profb_enatim, ln_ignmis 182 & ln_profb_enatim, ln_ignmis, ln_cl4 179 183 180 184 INTEGER :: jprofset … … 226 230 ln_velhradcp = .FALSE. 227 231 ln_velfb = .FALSE. 232 ln_sstnight = .FALSE. 228 233 ln_nea = .FALSE. 229 234 ln_grid_search_lookup = .FALSE. 230 235 ln_grid_global = .FALSE. 231 236 ln_s_at_t = .TRUE. 237 ln_cl4 = .FALSE. 232 238 grid_search_file = 'xypos' 233 239 bias_file='bias.nc' … … 357 363 WRITE(numout,*) ' Logical switch for GHRSST observations ln_ghrsst = ', ln_ghrsst 358 364 WRITE(numout,*) ' Logical switch for feedback SST data ln_sstfb = ', ln_sstfb 365 WRITE(numout,*) ' Logical switch for night-time SST obs ln_sstnight = ', ln_sstnight 359 366 WRITE(numout,*) ' Logical switch for SSS observations ln_sss = ', ln_sss 360 367 WRITE(numout,*) ' Logical switch for Sea Ice observations ln_seaice = ', ln_seaice … … 750 757 nsstsets = nsstsets + 1 751 758 752 ld_sstnight(nsstsets) = .TRUE.759 ld_sstnight(nsstsets) = ln_sstnight 753 760 754 761 CALL obs_rea_sst_rey( reysstname, reysstfmt, sstdata(nsstsets), & … … 764 771 nsstsets = nsstsets + 1 765 772 766 ld_sstnight(nsstsets) = .TRUE.773 ld_sstnight(nsstsets) = ln_sstnight 767 774 768 775 CALL obs_rea_sst( 1, sstdata(nsstsets), jnumsst, & … … 783 790 nsstsets = nsstsets + 1 784 791 785 ld_sstnight(nsstsets) = .TRUE.792 ld_sstnight(nsstsets) = ln_sstnight 786 793 787 794 CALL obs_rea_sst( 0, sstdata(nsstsets), 1, & … … 1414 1421 END SUBROUTINE dia_obs_wri 1415 1422 1423 SUBROUTINE dia_obs_dealloc 1424 IMPLICIT NONE 1425 !!---------------------------------------------------------------------- 1426 !! *** ROUTINE dia_obs_dealloc *** 1427 !! 1428 !! ** Purpose : To deallocate data to enable the obs_oper online loop. 1429 !! Specifically: dia_obs_init --> dia_obs --> dia_obs_wri 1430 !! 1431 !! ** Method : Clean up various arrays left behind by the obs_oper. 1432 !! 1433 !! ** Action : 1434 !! 1435 !!---------------------------------------------------------------------- 1436 !! obs_grid deallocation 1437 CALL obs_grid_deallocate 1438 1439 !! diaobs deallocation 1440 IF ( nprofsets > 0 ) THEN 1441 DEALLOCATE(ld_enact, & 1442 & profdata, & 1443 & prodatqc) 1444 END IF 1445 IF ( ln_sla ) THEN 1446 DEALLOCATE(sladata, & 1447 & sladatqc) 1448 END IF 1449 IF ( ln_seaice ) THEN 1450 DEALLOCATE(sladata, & 1451 & sladatqc) 1452 END IF 1453 IF ( ln_sst ) THEN 1454 DEALLOCATE(sstdata, & 1455 & sstdatqc) 1456 END IF 1457 IF ( ln_vel3d ) THEN 1458 DEALLOCATE(ld_velav, & 1459 & velodata, & 1460 & veldatqc) 1461 END IF 1462 END SUBROUTINE dia_obs_dealloc 1463 1416 1464 SUBROUTINE ini_date( ddobsini ) 1417 1465 !!---------------------------------------------------------------------- -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/OBS/mpp_map.F90
r2363 r4229 52 52 !!---------------------------------------------------------------------- 53 53 54 ALLOCATE( & 55 & mppmap(jpiglo,jpjglo) & 56 & ) 57 54 IF (.NOT. ALLOCATED(mppmap)) THEN 55 ALLOCATE( & 56 & mppmap(jpiglo,jpjglo) & 57 & ) 58 ENDIF 58 59 ! Initialize local imppmap 59 60 -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/OBS/obs_fbm.F90
r2287 r4229 45 45 INTEGER, PARAMETER :: fbimdi = -99999 !: Integers 46 46 REAL(fbsp), PARAMETER :: fbrmdi = 99999 !: Reals 47 47 48 ! Output stream choice 49 LOGICAL :: ln_cl4 = .FALSE. !: Logical switch for 50 !: class 4 file outputs 51 48 52 ! Main data structure for observation feedback data. 49 53 … … 1026 1030 1027 1031 SUBROUTINE write_obfbdata( cdfilename, fbdata ) 1032 !!---------------------------------------------------------------------- 1033 !! *** ROUTINE write_obfbdata *** 1034 !! 1035 !! ** Purpose : Write an obfbdata structure into a netCDF file. 1036 !! 1037 !! ** Method : Decides which output wrapper to use. 1038 !! 1039 !! ** Action : 1040 !! 1041 !!---------------------------------------------------------------------- 1042 !! * Arguments 1043 CHARACTER(len=*) :: cdfilename ! Output filename 1044 TYPE(obfbdata) :: fbdata ! obsfbdata structure 1045 #if defined key_offobsoper 1046 IF (ln_cl4) THEN 1047 ! Class 4 file output stream 1048 CALL write_obfbdata_cl( cdfilename, fbdata ) 1049 ELSE 1050 #endif 1051 ! Standard feedback file output stream 1052 CALL write_obfbdata_fb( cdfilename, fbdata ) 1053 #if defined key_offobsoper 1054 ENDIF 1055 #endif 1056 END SUBROUTINE write_obfbdata 1057 1058 SUBROUTINE write_obfbdata_fb( cdfilename, fbdata ) 1028 1059 !!---------------------------------------------------------------------- 1029 1060 !! *** ROUTINE write_obfbdata *** … … 1524 1555 1525 1556 1526 END SUBROUTINE write_obfbdata 1557 END SUBROUTINE write_obfbdata_fb 1558 1559 #if defined key_offobsoper 1560 SUBROUTINE write_obfbdata_cl(cdfilename, fbdata) 1561 !!---------------------------------------------------------------------- 1562 !! *** ROUTINE write_obfbdata_cl *** 1563 !! 1564 !! ** Purpose : Write an obfbdata structure into a class 4 file. 1565 !! 1566 !! ** Method : 1. Allocate memory needed by ooo_write 1567 !! 2. Map obfbdata into allocated memory 1568 !! 3. Pass mapped data to ooo_write 1569 !! 4. Deallocate memory 1570 !!---------------------------------------------------------------------- 1571 USE dom_oce, ONLY: narea 1572 USE ooo_write 1573 USE ooo_data 1574 !! * Arguments 1575 CHARACTER(len=*) :: cdfilename ! Feedback filename 1576 TYPE(obfbdata) :: fbdata ! obsfbdata structure 1577 !! * Local variables 1578 CHARACTER(len=17), PARAMETER :: cpname = 'write_obfbdata_cl' 1579 CHARACTER(len=64) :: & 1580 & cdate, & !: class 4 file validity date 1581 & cconf, & !: model configuration 1582 & csys, & !: model system 1583 & ccont, & !: contact email 1584 & cinst, & !: institution 1585 & cversion !: model version 1586 CHARACTER(len=8) :: & 1587 & ckind !: observation kind 1588 CHARACTER(len=3) :: cfield 1589 INTEGER :: kobs, & !: number of observations 1590 & kvars, & !: number of physical variables 1591 & kdeps, & !: number of observed depths 1592 & kfcst, & !: number of forecasts 1593 & kifcst, & !: current forecast number 1594 & kproc !: processor number 1595 INTEGER, DIMENSION(:, :, :), ALLOCATABLE :: & 1596 & kqc !: quality control counterpart 1597 INTEGER(KIND=2), DIMENSION(:, :, :), ALLOCATABLE :: & 1598 & k2qc !: quality control counterpart 1599 REAL(kind=fbdp) :: & 1600 & pmodjuld !: model Julian day 1601 REAL(kind=fbdp), DIMENSION(:), ALLOCATABLE :: & 1602 & plead, & !: forecast lead time 1603 & plam, & !: longitude of observation 1604 & pphi, & !: latitude of observation 1605 & ptim !: time of observation 1606 REAL(kind=fbdp), DIMENSION(:, :), ALLOCATABLE :: & 1607 & pdep !: depths of observations 1608 REAL(kind=fbdp), DIMENSION(:, :, :), ALLOCATABLE :: & 1609 & pob, & !: observation counterpart 1610 & pextra !: extra field counterpart 1611 REAL(kind=fbdp), DIMENSION(:, :, :), ALLOCATABLE :: & 1612 & pmod !: model counterpart 1613 CHARACTER(len=128) :: & 1614 & clfilename !: class 4 file name 1615 CHARACTER(len=128), DIMENSION(:), ALLOCATABLE :: & 1616 & ctype !: Instrument type 1617 CHARACTER(len=nf90_max_name) :: & 1618 & cdtmp !: NetCDF variable name 1619 CHARACTER(len=8), DIMENSION(:), ALLOCATABLE :: & 1620 & cwmo, & !: Instrument WMO ID 1621 & cunit, & !: Instrument WMO ID 1622 & cvarname !: Instrument WMO ID 1623 INTEGER :: & 1624 & idep, & !: Loop variable 1625 & ivar, & !: Loop variable 1626 & iobs, & !: Loop variable 1627 & ii, & !: Loop variable 1628 & ij, & !: Loop variable 1629 & ik, & !: Loop variable 1630 & il !: Loop variable 1631 cconf = TRIM(cl4_cfg) 1632 csys = TRIM(cl4_sys) 1633 cversion = TRIM(cl4_vn) 1634 ccont = TRIM(cl4_contact) 1635 cinst = TRIM(cl4_inst) 1636 cdate = TRIM(cl4_date) 1637 CALL locate_kind(cdfilename, ckind) 1638 kproc = narea 1639 kfcst = cl4_fcst_len 1640 kobs = fbdata%nobs 1641 kdeps = fbdata%nlev 1642 kvars = fbdata%nvar 1643 IF (kobs .GT. 0) THEN 1644 ALLOCATE(plam(kobs), & 1645 & pphi(kobs), & 1646 & ptim(kobs), & 1647 & plead(kfcst), & 1648 & pdep(kdeps, kobs), & 1649 & kqc(kdeps, kvars, kobs), & 1650 & k2qc(kdeps, kvars, kobs), & 1651 & pob(kdeps, kvars, kobs), & 1652 & pmod(kdeps, kvars, kobs), & 1653 & pextra(kdeps, kvars, kobs), & 1654 & ctype(kobs), & 1655 & cwmo(kobs), & 1656 & cunit(kvars), & 1657 & cvarname(kvars)) 1658 plam(:) = fbdata%plam(:) 1659 pphi(:) = fbdata%pphi(:) 1660 ptim(:) = fbdata%ptim(:) 1661 pdep(:, :) = fbdata%pdep(:, :) 1662 kqc(:,:,:) = 1. 1663 DO ii = 1, kvars 1664 cvarname(ii) = fbdata%cname(ii) 1665 cunit(ii) = fbdata%cobunit(ii) 1666 END DO 1667 1668 ! Quality control algorithm 1669 k2qc(:,:,:) = NF90_FILL_SHORT 1670 DO idep = 1,kdeps 1671 DO ivar = 1, kvars 1672 DO iobs = 1, kobs 1673 ! 1 symbolises good for fbdata 1674 ! fbimdi symbolises that qc has not been set 1675 ! Essentially, if any fbdata flag is not an element of {1, fbimdi} 1676 ! then set the class 4 flag to bad. 1677 ! Note: fbdata%ioqc is marked good if zero. 1678 IF (((fbdata%ioqc(iobs) /= 0) .AND. & 1679 & (fbdata%ioqc(iobs) /= fbimdi)) .OR. & 1680 & ((fbdata%ipqc(iobs) /= 1) .AND. & 1681 & (fbdata%ipqc(iobs) /= fbimdi)) .OR. & 1682 & ((fbdata%idqc(idep,iobs) /= 1) .AND. & 1683 & (fbdata%idqc(idep,iobs) /= fbimdi)) .OR. & 1684 & ((fbdata%ivqc(iobs,ivar) /= 1) .AND. & 1685 & (fbdata%ivqc(iobs,ivar) /= fbimdi)) .OR. & 1686 & ((fbdata%ivlqc(idep,iobs,ivar) /= 1) .AND. & 1687 & (fbdata%ivlqc(idep,iobs,ivar) /= fbimdi)) .OR. & 1688 & ((fbdata%itqc(iobs) /= 1) .AND. & 1689 & (fbdata%itqc(iobs) /= fbimdi))) THEN 1690 ! 1 symbolises bad for class 4 file 1691 k2qc(idep, ivar, iobs) = 1 1692 ELSE 1693 ! 0 symbolises good for class 4 file 1694 k2qc(idep, ivar, iobs) = 0 1695 END IF 1696 END DO 1697 END DO 1698 END DO 1699 1700 ! Permute observation dimensions 1701 pob(:,:,:) = RESHAPE(fbdata%pob, (/kdeps, kvars, kobs/), & 1702 & ORDER=(/1, 3, 2/)) 1703 1704 ! Explicit model counterpart dimension permutation 1705 ! 1,2,3,4 --> 1,4,2,3 1706 pmod(:,:,:) = fbrmdi 1707 ij = cl4_fcst_idx(jimatch) 1708 DO ii = 1,kdeps 1709 DO ik = 1, kvars 1710 DO il = 1, kobs 1711 pmod(ii,ik,il) = fbdata%padd(ii,il,1,ik) 1712 END DO 1713 END DO 1714 END DO 1715 1716 ! Extra fields set to missing for now 1717 pextra(:,:,:) = fbrmdi 1718 1719 ! Lead time of class 4 file is a global parameter 1720 plead = cl4_leadtime(1:cl4_fcst_len) 1721 1722 ! Model Julian day 1723 pmodjuld = cl4_modjuld 1724 1725 ! Observation types 1726 ctype(:) = 'X' 1727 DO ii = 1,kobs 1728 ctype(ii) = fbdata%cdtyp(ii) 1729 END DO 1730 1731 ! World Meteorology Organisation codes 1732 cwmo(:) = fbdata%cdwmo(:) 1733 1734 ! Initialise class 4 file 1735 CALL ooo_wri_init(cconf, csys, ckind, cversion, ccont, cinst, cdate, & 1736 & kproc, kobs, kvars, kdeps, kfcst, & 1737 & clfilename) 1738 1739 ! Write standard variables 1740 CALL ooo_wri_default(clfilename, kobs, kvars, kfcst, kdeps, & 1741 & ctype, cwmo, cunit, cvarname, & 1742 & plam, pphi, pdep, ptim, pob, plead, & 1743 & k2qc, pmodjuld) 1744 !! Write to optional variables 1745 cdtmp = cl4_vars(jimatch) 1746 IF ( (TRIM(cdtmp) == "forecast") .OR. & 1747 (TRIM(cdtmp) == "persistence") ) THEN 1748 !! 4D variables 1749 CALL ooo_wri_extra(clfilename, TRIM(cdtmp), kdeps, kfcst, & 1750 & kvars, kobs, (/ 1,ij,1,1 /), (/ kdeps,1,kvars,kobs /), pmod) 1751 ELSE 1752 !! 3D variables 1753 CALL ooo_wri_extra(clfilename, TRIM(cdtmp), kdeps, & 1754 & kvars, kobs, (/ 1,1,1 /), (/ kdeps,kvars,kobs /), pmod) 1755 ENDIF 1756 1757 DEALLOCATE(plam, pphi, ptim, pdep, plead, kqc, k2qc, & 1758 & pob, pmod, pextra, ctype, cwmo, & 1759 & cunit, cvarname) 1760 END IF 1761 END SUBROUTINE write_obfbdata_cl 1762 #endif 1763 1764 #if defined key_offobsoper 1765 SUBROUTINE locate_kind(cdfilename, ckind) 1766 !!---------------------------------------------------------------------- 1767 !! *** ROUTINE locate_kind *** 1768 !! 1769 !! ** Purpose : Detect which kind of class 4 file is being produced. 1770 !! 1771 !! ** Method : 1. Inspect cdfilename for observation kind. 1772 !!---------------------------------------------------------------------- 1773 CHARACTER(len=*) :: cdfilename ! Feedback filename 1774 CHARACTER(len=8) :: ckind 1775 IF (cdfilename(1:3) == 'sst') THEN 1776 ckind = 'SST' 1777 ELSE IF (cdfilename(1:3) == 'sla') THEN 1778 ckind = 'SLA' 1779 ELSE IF (cdfilename(1:3) == 'pro') THEN 1780 ckind = 'profile' 1781 ELSE IF (cdfilename(1:3) == 'ena') THEN 1782 ckind = 'profile' 1783 ELSE IF (cdfilename(1:3) == 'sea') THEN 1784 ckind = 'seaice' 1785 ELSE 1786 ckind = 'unknown' 1787 END IF 1788 END SUBROUTINE locate_kind 1789 #endif 1527 1790 1528 1791 SUBROUTINE putvaratt_obfbdata( idfile, idvar, cdlongname, cdunits, & -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90
r3651 r4229 861 861 862 862 ENDIF 863 864 863 sstdatqc%rmod(jobs,1) = zext(1) 865 864 -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
r3851 r4229 21 21 USE lib_mpp ! MPP library 22 22 USE wrk_nemo ! work arrays 23 USE lbclnk ! ocean lateral boundary conditions (C1D case) 23 24 USE ioipsl, ONLY : ymds2ju, ju2ymds ! for calendar 24 25 … … 31 32 TYPE, PUBLIC :: FLD_N !: Namelist field informations 32 33 CHARACTER(len = 256) :: clname ! generic name of the NetCDF flux file 33 INTEGER:: nfreqh ! frequency of each flux file34 REAL(wp) :: nfreqh ! frequency of each flux file 34 35 CHARACTER(len = 34) :: clvar ! generic name of the variable in the NetCDF flux file 35 36 LOGICAL :: ln_tint ! time interpolation or not (T/F) … … 45 46 CHARACTER(len = 256) :: clrootname ! generic name of the NetCDF file 46 47 CHARACTER(len = 256) :: clname ! current name of the NetCDF file 47 INTEGER:: nfreqh ! frequency of each flux file48 REAL(wp) :: nfreqh ! frequency of each flux file 48 49 CHARACTER(len = 34) :: clvar ! generic name of the variable in the NetCDF flux file 49 50 LOGICAL :: ln_tint ! time interpolation or not (T/F) … … 193 194 sd(jf)%fdta(:,:,:,1) = sd(jf)%fdta(:,:,:,2) ! re-swap before record field 194 195 sd(jf)%nrec_b(1) = sd(jf)%nrec_a(1) ! update before record informations 195 sd(jf)%nrec_b(2) = sd(jf)%nrec_a(2) - sd(jf)%nfreqh * 3600! assume freq to be in hours in this case196 sd(jf)%nrec_b(2) = sd(jf)%nrec_a(2) - NINT( sd(jf)%nfreqh * 3600 ) ! assume freq to be in hours in this case 196 197 sd(jf)%rotn(1) = sd(jf)%rotn(2) ! update before rotate informations 197 198 sd(jf)%nrec_a(1) = itmp ! move back to after record … … 211 212 sd(jf)%fdta(:,:,:,1) = sd(jf)%fdta(:,:,:,2) ! re-swap before record field 212 213 sd(jf)%nrec_b(1) = sd(jf)%nrec_a(1) ! update before record informations 213 sd(jf)%nrec_b(2) = sd(jf)%nrec_a(2) - sd(jf)%nfreqh * 3600! assume freq to be in hours in this case214 sd(jf)%nrec_b(2) = sd(jf)%nrec_a(2) - NINT( sd(jf)%nfreqh * 3600 ) ! assume freq to be in hours in this case 214 215 sd(jf)%rotn(1) = sd(jf)%rotn(2) ! update before rotate informations 215 216 sd(jf)%nrec_a(1) = sd(jf)%nrec_a(1) + 1 ! move back to after record … … 264 265 IF( sd(jf)%ln_tint ) THEN ! temporal interpolation 265 266 IF(lwp .AND. kt - nit000 <= 100 ) THEN 266 clfmt = "('fld_read: var ', a, ' kt = ', i8, ' (', f 7.2,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," // &267 & "', records b/a: ', i 4.4, '/', i4.4, ' (days ', f7.2,'/', f7.2, ')')"267 clfmt = "('fld_read: var ', a, ' kt = ', i8, ' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," // & 268 & "', records b/a: ', i6.4, '/', i6.4, ' (days ', f9.4,'/', f9.4, ')')" 268 269 WRITE(numout, clfmt) TRIM( sd(jf)%clvar ), kt, REAL(isecsbc,wp)/rday, nyear, nmonth, nday, & 269 270 & sd(jf)%nrec_b(1), sd(jf)%nrec_a(1), REAL(sd(jf)%nrec_b(2),wp)/rday, REAL(sd(jf)%nrec_a(2),wp)/rday … … 277 278 ELSE ! nothing to do... 278 279 IF(lwp .AND. kt - nit000 <= 100 ) THEN 279 clfmt = "('fld_read: var ', a, ' kt = ', i8,' (', f 7.2,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," // &280 & "', record: ', i 4.4, ' (days ', f7.2, ' <-> ', f7.2, ')')"280 clfmt = "('fld_read: var ', a, ' kt = ', i8,' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," // & 281 & "', record: ', i6.4, ' (days ', f9.4, ' <-> ', f9.4, ')')" 281 282 WRITE(numout, clfmt) TRIM(sd(jf)%clvar), kt, REAL(isecsbc,wp)/rday, nyear, nmonth, nday, & 282 283 & sd(jf)%nrec_a(1), REAL(sd(jf)%nrec_b(2),wp)/rday, REAL(sd(jf)%nrec_a(2),wp)/rday … … 349 350 ELSE ! higher frequency mean (in hours) 350 351 IF ( sdjf%cltype == 'monthly' ) THEN ! monthly file 351 sdjf%nrec_a(1) = 24 * nmonth_len(nmonth-1) / sdjf%nfreqh! last record of previous month352 sdjf%nrec_a(1) = NINT( 24 * nmonth_len(nmonth-1) / sdjf%nfreqh ) ! last record of previous month 352 353 llprevmth = .TRUE. ! use previous month file? 353 354 llprevyr = llprevmth .AND. nmonth == 1 ! use previous year file? 354 355 ELSEIF( sdjf%cltype(1:4) == 'week' ) THEN ! weekly file 355 356 llprevweek = .TRUE. ! use previous week file? 356 sdjf%nrec_a(1) = 24 * 7 / sdjf%nfreqh! last record of previous week357 sdjf%nrec_a(1) = NINT( 24 * 7 / sdjf%nfreqh ) ! last record of previous week 357 358 isec_week = NINT(rday) * 7 ! add a shift toward previous week 358 359 ELSEIF( sdjf%cltype == 'daily' ) THEN ! daily file 359 sdjf%nrec_a(1) = 24 / sdjf%nfreqh! last record of previous day360 sdjf%nrec_a(1) = NINT( 24 / sdjf%nfreqh ) ! last record of previous day 360 361 llprevday = .TRUE. ! use previous day file? 361 362 llprevmth = llprevday .AND. nday == 1 ! use previous month file? 362 363 llprevyr = llprevmth .AND. nmonth == 1 ! use previous year file? 363 364 ELSE ! yearly file 364 sdjf%nrec_a(1) = 24 * nyear_len(0) / sdjf%nfreqh! last record of previous year365 sdjf%nrec_a(1) = NINT( 24 * nyear_len(0) / sdjf%nfreqh ) ! last record of previous year 365 366 llprevyr = .NOT. sdjf%ln_clim ! use previous year file? 366 367 ENDIF … … 401 402 CALL fld_get( sdjf, map ) 402 403 403 clfmt = "('fld_init : time-interpolation for ', a, ' read previous record = ', i 4, ' at time = ', f7.2, ' days')"404 clfmt = "('fld_init : time-interpolation for ', a, ' read previous record = ', i6, ' at time = ', f7.2, ' days')" 404 405 IF(lwp) WRITE(numout, clfmt) TRIM(sdjf%clvar), sdjf%nrec_a(1), REAL(sdjf%nrec_a(2),wp)/rday 405 406 … … 511 512 ! ! ================================ ! 512 513 ! 513 ifreq_sec = sdjf%nfreqh * 3600! frequency mean (in seconds)514 ifreq_sec = NINT( sdjf%nfreqh * 3600 ) ! frequency mean (in seconds) 514 515 IF( sdjf%cltype(1:4) == 'week' ) isec_week = ksec_week( sdjf%cltype(6:8) ) ! since the first day of the current week 515 516 ! number of second since the beginning of the file … … 581 582 INTEGER :: iw ! index into wgts array 582 583 INTEGER :: ipdom ! index of the domain 584 INTEGER :: idvar ! variable ID 585 INTEGER :: idmspc ! number of spatial dimensions 586 LOGICAL :: lmoor ! C1D case: point data 583 587 !!--------------------------------------------------------------------- 584 588 ! … … 598 602 ELSE ; ipdom = jpdom_unknown 599 603 ENDIF 604 ! C1D case: If product of spatial dimensions == ipk, then x,y are of 605 ! size 1 (point/mooring data): this must be read onto the central grid point 606 idvar = iom_varid( sdjf%num, sdjf%clvar ) 607 idmspc = iom_file( sdjf%num )%ndims( idvar ) 608 IF( iom_file( sdjf%num )%luld( idvar ) ) idmspc = idmspc - 1 609 lmoor = (idmspc == 0 .OR. PRODUCT( iom_file( sdjf%num )%dimsz( 1:MAX(idmspc,1) ,idvar ) ) == ipk) 610 ! 600 611 SELECT CASE( ipk ) 601 612 CASE(1) 602 IF( sdjf%ln_tint ) THEN ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) ) 603 ELSE ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,1 ), sdjf%nrec_a(1) ) 613 IF( lk_c1d .AND. lmoor ) THEN 614 IF( sdjf%ln_tint ) THEN 615 CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fdta(2,2,1,2), sdjf%nrec_a(1) ) 616 CALL lbc_lnk( sdjf%fdta(:,:,1,2),'Z',1. ) 617 ELSE 618 CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fnow(2,2,1 ), sdjf%nrec_a(1) ) 619 CALL lbc_lnk( sdjf%fnow(:,:,1 ),'Z',1. ) 620 ENDIF 621 ELSE 622 IF( sdjf%ln_tint ) THEN ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) ) 623 ELSE ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,1 ), sdjf%nrec_a(1) ) 624 ENDIF 604 625 ENDIF 605 626 CASE DEFAULT 606 IF( sdjf%ln_tint ) THEN ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) ) 607 ELSE ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,: ), sdjf%nrec_a(1) ) 627 IF (lk_c1d .AND. lmoor ) THEN 628 IF( sdjf%ln_tint ) THEN 629 CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fdta(2,2,:,2), sdjf%nrec_a(1) ) 630 CALL lbc_lnk( sdjf%fdta(:,:,:,2),'Z',1. ) 631 ELSE 632 CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fnow(2,2,: ), sdjf%nrec_a(1) ) 633 CALL lbc_lnk( sdjf%fnow(:,:,: ),'Z',1. ) 634 ENDIF 635 ELSE 636 IF( sdjf%ln_tint ) THEN ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) ) 637 ELSE ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,: ), sdjf%nrec_a(1) ) 638 ENDIF 608 639 ENDIF 609 640 END SELECT … … 817 848 ENDIF 818 849 ELSE ! higher frequency mean (in hours) 819 IF( sdjf%cltype == 'monthly' ) THEN ; sdjf%nreclast = 24 * imonth_len / sdjf%nfreqh820 ELSEIF( sdjf%cltype(1:4) == 'week' ) THEN ; sdjf%nreclast = 24 * 7 / sdjf%nfreqh821 ELSEIF( sdjf%cltype == 'daily' ) THEN ; sdjf%nreclast = 24 / sdjf%nfreqh822 ELSE ; sdjf%nreclast = 24 * iyear_len / sdjf%nfreqh850 IF( sdjf%cltype == 'monthly' ) THEN ; sdjf%nreclast = NINT( 24 * imonth_len / sdjf%nfreqh ) 851 ELSEIF( sdjf%cltype(1:4) == 'week' ) THEN ; sdjf%nreclast = NINT( 24 * 7 / sdjf%nfreqh ) 852 ELSEIF( sdjf%cltype == 'daily' ) THEN ; sdjf%nreclast = NINT( 24 / sdjf%nfreqh ) 853 ELSE ; sdjf%nreclast = NINT( 24 * iyear_len / sdjf%nfreqh ) 823 854 ENDIF 824 855 ENDIF -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r3772 r4229 73 73 74 74 ! !!* Namelist namsbc_core : CORE bulk parameters 75 LOGICAL :: ln_2m = .FALSE. ! logical flag for height of air temp. and hum 75 LOGICAL :: ln_2m = .FALSE. ! logical flag for case where z(q,t) = 2m and z(u) = 10m 76 LOGICAL :: ln_bulk2z = .FALSE. ! logical flag for case where z(q,t) and z(u) are specified in the namelist 77 REAL(wp) :: rn_zqt = 10. ! z(q,t) : height of humidity and temperature measurements 78 REAL(wp) :: rn_zu = 10. ! z(u) : height of wind measurements 76 79 LOGICAL :: ln_taudif = .FALSE. ! logical flag to use the "mean of stress module - module of mean stress" data 77 80 REAL(wp) :: rn_pfac = 1. ! multiplication factor for precipitation … … 129 132 NAMELIST/namsbc_core/ cn_dir , ln_2m , ln_taudif, rn_pfac, & 130 133 & sn_wndi, sn_wndj, sn_humi , sn_qsr , & 131 & sn_qlw , sn_tair, sn_prec , sn_snow, sn_tdif 134 & sn_qlw , sn_tair, sn_prec , sn_snow, & 135 & sn_tdif, rn_zqt , ln_bulk2z, rn_zu 132 136 !!--------------------------------------------------------------------- 133 137 … … 319 323 & Cd , Ch , Ce , & 320 324 & zt_zu , zq_zu ) 325 ELSE IF( ln_bulk2z ) THEN 326 !! If the height of the air temp./spec. hum. and wind are to be specified by hand : 327 IF( rn_zqt == rn_zu ) THEN 328 !! If air temp. and spec. hum. are at the same height as wind : 329 CALL TURB_CORE_1Z( rn_zu, zst , sf(jp_tair)%fnow(:,:,1), & 330 & zqsatw, sf(jp_humi)%fnow(:,:,1), wndm, & 331 & Cd , Ch , Ce ) 332 ELSE 333 !! If air temp. and spec. hum. are at a different height to wind : 334 CALL TURB_CORE_2Z(rn_zqt, rn_zu , zst , sf(jp_tair)%fnow, & 335 & zqsatw, sf(jp_humi)%fnow, wndm, & 336 & Cd , Ch , Ce , & 337 & zt_zu , zq_zu ) 338 ENDIF 321 339 ELSE 322 340 !! If air temp. and spec. hum. are given at same height than wind (10m) : … … 363 381 ! Turbulent fluxes over ocean 364 382 ! ----------------------------- 365 IF( ln_2m ) THEN366 ! Values of temp. and hum. adjusted to 10m must be used instead of 2m values383 IF( ln_2m .OR. ( ln_bulk2z .AND. rn_zqt /= rn_zu ) ) THEN 384 ! Values of temp. and hum. adjusted to height of wind must be used 367 385 zevap(:,:) = MAX( 0.e0, rhoa *Ce(:,:)*( zqsatw(:,:) - zq_zu(:,:) ) * wndm(:,:) ) ! Evaporation 368 386 zqsb (:,:) = rhoa*cpa*Ch(:,:)*( zst (:,:) - zt_zu(:,:) ) * wndm(:,:) ! Sensible Heat … … 786 804 !! Momentum, Latent and sensible heat exchange coefficients 787 805 !! Caution: this procedure should only be used in cases when air 788 !! temperature (T_air) and air specific humidity (q_air) are at 2m789 !! whereas wind (dU) is at 10m.806 !! temperature (T_air) and air specific humidity (q_air) are at a 807 !! different height to wind (dU). 790 808 !! 791 809 !! References : Large & Yeager, 2004 : ??? … … 805 823 806 824 INTEGER :: j_itt 807 INTEGER , PARAMETER :: nb_itt = 3! number of itterations825 INTEGER , PARAMETER :: nb_itt = 5 ! number of itterations 808 826 REAL(wp), PARAMETER :: grav = 9.8 ! gravity 809 827 REAL(wp), PARAMETER :: kappa = 0.4 ! von Karman's constant … … 902 920 !! 903 921 !! Shifting the neutral 10m transfer coefficients to (zu,zeta_u) : 904 xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m) 922 xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - zpsi_m) ! L & Y eq. (10a) 905 923 Cd = Cd_n10/(xct*xct) ; sqrt_Cd = sqrt(Cd) 906 924 ENDIF … … 908 926 xlogt = log(zu/10.) - zpsi_hu 909 927 !! 910 xct = 1. + Ch_n10*xlogt/kappa/sqrt_Cd_n10 928 xct = 1. + Ch_n10*xlogt/kappa/sqrt_Cd_n10 ! L & Y eq. (10b) 911 929 Ch = Ch_n10*sqrt_Cd/sqrt_Cd_n10/xct 912 930 !! 913 xct = 1. + Ce_n10*xlogt/kappa/sqrt_Cd_n10 931 xct = 1. + Ce_n10*xlogt/kappa/sqrt_Cd_n10 ! L & Y eq. (10c) 914 932 Ce = Ce_n10*sqrt_Cd/sqrt_Cd_n10/xct 915 933 !! -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90
r3294 r4229 27 27 USE oce ! ocean: variables 28 28 USE dom_oce ! ocean: domain variables 29 USE c1d ! 1D vertical configuration 29 30 USE trdmod_oce ! ocean: trend variables 30 31 USE trdtra ! active tracers: trends … … 44 45 PUBLIC tra_dmp ! routine called by step.F90 45 46 PUBLIC tra_dmp_init ! routine called by opa.F90 46 PUBLIC dtacof ! routine called by in both tradmp.F90 and trcdmp.F9047 PUBLIC dtacof_zoom ! routine called by in both tradmp.F90 and trcdmp.F9047 PUBLIC dtacof ! routine called by tradmp.F90, trcdmp.F90 and dyndmp.F90 48 PUBLIC dtacof_zoom ! routine called by tradmp.F90, trcdmp.F90 and dyndmp.F90 48 49 49 50 ! !!* Namelist namtra_dmp : T & S newtonian damping * 50 LOGICAL , PUBLIC :: ln_tradmp = .TRUE. !: internal damping flag51 INTEGER 52 INTEGER 53 REAL(wp) 54 REAL(wp) 55 REAL(wp) 56 INTEGER 51 LOGICAL , PUBLIC :: ln_tradmp = .TRUE. !: internal damping flag 52 INTEGER , PUBLIC :: nn_hdmp = -1 ! = 0/-1/'latitude' for damping over T and S 53 INTEGER , PUBLIC :: nn_zdmp = 0 ! = 0/1/2 flag for damping in the mixed layer 54 REAL(wp), PUBLIC :: rn_surf = 50._wp ! surface time scale for internal damping [days] 55 REAL(wp), PUBLIC :: rn_bot = 360._wp ! bottom time scale for internal damping [days] 56 REAL(wp), PUBLIC :: rn_dep = 800._wp ! depth of transition between rn_surf and rn_bot [meters] 57 INTEGER , PUBLIC :: nn_file = 2 ! = 1 create a damping.coeff NetCDF file 57 58 58 59 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: strdmp !: damping salinity trend (psu/s) … … 191 192 !! ** Purpose : Initialization for the newtonian damping 192 193 !! 193 !! ** Method : read the nam mbfnamelist and check the parameters194 !! ** Method : read the namtra_dmp namelist and check the parameters 194 195 !!---------------------------------------------------------------------- 195 196 NAMELIST/namtra_dmp/ ln_tradmp, nn_hdmp, nn_zdmp, rn_surf, rn_bot, rn_dep, nn_file … … 199 200 READ ( numnam, namtra_dmp ) 200 201 201 IF( lzoom ) nn_zdmp = 0 ! restoring to climatology at closed north or south boundaries202 IF( lzoom .AND. .NOT. lk_c1d ) nn_zdmp = 0 ! restoring to climatology at closed north or south boundaries 202 203 203 204 IF(lwp) THEN ! Namelist print … … 206 207 WRITE(numout,*) '~~~~~~~' 207 208 WRITE(numout,*) ' Namelist namtra_dmp : set damping parameter' 208 WRITE(numout,*) ' add a damping term n or notln_tradmp = ', ln_tradmp209 WRITE(numout,*) ' add a damping term or not ln_tradmp = ', ln_tradmp 209 210 WRITE(numout,*) ' T and S damping option nn_hdmp = ', nn_hdmp 210 WRITE(numout,*) ' mixed layer damping option nn_zdmp = ', nn_zdmp, '( zoom: forced to 0)'211 WRITE(numout,*) ' mixed layer damping option nn_zdmp = ', nn_zdmp, '(non-C1D zoom: forced to 0)' 211 212 WRITE(numout,*) ' surface time scale (days) rn_surf = ', rn_surf 212 213 WRITE(numout,*) ' bottom time scale (days) rn_bot = ', rn_bot … … 220 221 IF( tra_dmp_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'tra_dmp_init: unable to allocate arrays' ) 221 222 ! 223 #if ! defined key_c1d 222 224 SELECT CASE ( nn_hdmp ) 223 225 CASE ( -1 ) ; IF(lwp) WRITE(numout,*) ' tracer damping in the Med & Red seas only' … … 228 230 END SELECT 229 231 ! 232 #endif 230 233 SELECT CASE ( nn_zdmp ) 231 234 CASE ( 0 ) ; IF(lwp) WRITE(numout,*) ' tracer damping throughout the water column' … … 245 248 ttrdmp(:,:,:) = 0._wp 246 249 ! ! Damping coefficients initialization 247 IF( lzoom ) THEN ; CALL dtacof_zoom( resto )250 IF( lzoom .AND. .NOT. lk_c1d ) THEN ; CALL dtacof_zoom( resto ) 248 251 ELSE ; CALL dtacof( nn_hdmp, rn_surf, rn_bot, rn_dep, nn_file, 'TRA', resto ) 249 252 ENDIF … … 353 356 REAL(wp) , INTENT(in ) :: pn_dep ! depth of transition (meters) 354 357 INTEGER , INTENT(in ) :: kn_file ! save the damping coef on a file or not 355 CHARACTER(len=3) , INTENT(in ) :: cdtype ! =TRA or TRC (tracerindicator)358 CHARACTER(len=3) , INTENT(in ) :: cdtype ! =TRA, TRC or DYN (tracer/dynamics indicator) 356 359 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: presto ! restoring coeff. (s-1) 357 360 ! … … 373 376 CALL wrk_alloc( jpi, jpj, zmrs ) 374 377 CALL wrk_alloc( jpi, jpj, jpk, zdct ) 378 #if defined key_c1d 379 ! ! ==================== 380 ! ! C1D configuration : local domain 381 ! ! ==================== 382 ! 383 IF(lwp) WRITE(numout,*) 384 IF(lwp) WRITE(numout,*) ' dtacof : C1D 3x3 local domain' 385 IF(lwp) WRITE(numout,*) ' -----------------------------' 386 ! 387 presto(:,:,:) = 0._wp 388 ! 389 zsdmp = 1._wp / ( pn_surf * rday ) 390 zbdmp = 1._wp / ( pn_bot * rday ) 391 DO jk = 2, jpkm1 392 DO jj = 1, jpj 393 DO ji = 1, jpi 394 ! ONLY vertical variation from zsdmp (sea surface) to zbdmp (bottom) 395 presto(ji,jj,jk) = zbdmp + (zsdmp-zbdmp) * EXP(-fsdept(ji,jj,jk)/pn_dep) 396 END DO 397 END DO 398 END DO 399 ! 400 presto(:,:, : ) = presto(:,:,:) * tmask(:,:,:) 401 #else 375 402 ! ! ==================== 376 403 ! ! ORCA configuration : global domain … … 552 579 CALL ctl_stop( 'Choose a correct value of nn_hdmp or put ln_tradmp to FALSE' ) 553 580 ENDIF 581 #endif 554 582 555 583 ! !--------------------------------! … … 559 587 IF( cdtype == 'TRA' ) cfile = 'damping.coeff' 560 588 IF( cdtype == 'TRC' ) cfile = 'damping.coeff.trc' 589 IF( cdtype == 'DYN' ) cfile = 'damping.coeff.dyn' 561 590 cfile = TRIM( cfile ) 562 591 CALL iom_open ( cfile, inum0, ldwrt = .TRUE., kiolib = jprstlib ) -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r3769 r4229 76 76 USE c1d ! 1D configuration 77 77 USE step_c1d ! Time stepping loop for the 1D configuration 78 USE dyndmp ! Momentum damping 78 79 #if defined key_top 79 80 USE trcini ! passive tracer initialisation … … 328 329 CALL phy_cst ! Physical constants 329 330 CALL eos_init ! Equation of state 331 IF( lk_c1d ) CALL c1d_init ! 1D column configuration 330 332 CALL dom_cfg ! Domain configuration 331 333 CALL dom_init ! Domain … … 368 370 CALL tra_bbc_init ! bottom heat flux 369 371 IF( lk_trabbl ) CALL tra_bbl_init ! advective (and/or diffusive) bottom boundary layer scheme 370 IF( ln_tradmp ) CALL tra_dmp_init ! internal damping trends372 CALL tra_dmp_init ! internal damping trends- tracers 371 373 CALL tra_adv_init ! horizontal & vertical advection 372 374 CALL tra_ldf_init ! lateral mixing … … 374 376 375 377 ! ! Dynamics 378 IF( lk_c1d ) CALL dyn_dmp_init ! internal damping trends- momentum 376 379 CALL dyn_adv_init ! advection (vector or flux form) 377 380 CALL dyn_vor_init ! vorticity term including Coriolis -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_AMM_12km.h90
r3680 r4229 4 4 !! (AMM_12km configuration VN3.3) 5 5 !!--------------------------------------------------------------------- 6 CHARACTER (len=16) &6 CHARACTER (len=16) & 7 7 #if !defined key_agrif 8 , PARAMETER &8 , PARAMETER & 9 9 #endif 10 :: &11 cp_cfg = "amm" !: name of the configuration12 INTEGER &10 :: & 11 cp_cfg = "amm" !: Name of the configuration 12 INTEGER & 13 13 #if !defined key_agrif 14 , PARAMETER &14 , PARAMETER & 15 15 #endif 16 :: &17 jp_cfg = 011 , & !: resolution of the configuration (degrees)18 ! Original data size 19 jpidta = 198, & !: first horizontal dimension > or = to jpi20 jp jdta = 224, & !: second > or = to jpj21 jp kdta = 51, & !: number of levels > or = to jpk22 ! total domain matrix size23 jpiglo = jpidta, & !: first dimension of global domain --> i 24 jpjglo = jpjdta, & !: second dimension of global domain --> j 25 ! starting position of the zoom26 jpi zoom = 1 , & !: left bottom (i,j) indices of the zoom27 jpj zoom = 1 , & !: in data indices16 :: & 17 jp_cfg = 011 , & !: Resolution of the configuration (degrees) 18 19 ! Data domain size !!! * Size of all input files * 20 jpidta = 198 , & !: 1st lateral dimension ( >= jpiglo ) 21 jpjdta = 224 , & !: 2nd lateral dimension ( >= jpjglo ) 22 jpkdta = 51 , & !: Number of levels ( >= jpk ) 23 24 #if defined key_c1d 25 ! Zoom domain size !!! * C1D zoom * 26 jpiglo = 3 , & !: 1st dimension of global domain --> i 27 jpjglo = 3 , & !: 2nd dimension of global domain --> j 28 28 ! Domain characteristics 29 jperio = 0 !: lateral cond. type (between 0 and 6) 29 jperio = 0 !: Lateral cond. type (between 0 and 6) 30 31 INTEGER & 32 :: & 33 ! Starting position of the zoom 34 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 35 jpjzoom = 1 !: in data domain indices 36 #else 37 ! Global domain size !!! * Global domain * 38 jpiglo = jpidta, & !: 1st dimension of global domain --> i 39 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 40 ! Starting position of the zoom 41 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 42 jpjzoom = 1 , & !: in data domain indices 43 ! Domain characteristics 44 jperio = 0 !: Lateral cond. type (between 0 and 6) 45 #endif 46 30 47 31 48 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 32 49 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 33 REAL,PARAMETER :: pp_not_used = 999999_wp , & 34 & pp_to_be_computed = 0._wp 35 !! 36 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 37 !! 38 INTEGER, PARAMETER :: & ! 39 jphgr_msh = 0 !: type of horizontal mesh 40 ! ! = 0 curvilinear coordinate on the sphere 41 ! ! read in coordinate.nc file 42 ! ! = 1 geographical mesh on the sphere 43 ! ! with regular grid-spacing 44 ! ! = 2 f-plane with regular grid-spacing 45 ! ! = 3 beta-plane with regular grid-spacing 46 ! ! = 4 Mercator grid with T/U point at the equator with 47 ! ! isotropic resolution (e1_deg) 50 51 REAL(wp), PARAMETER :: & 52 pp_not_used = 999999._wp , & !: 53 pp_to_be_computed = 0._wp !: 54 55 56 !! Coefficients associated with the horizontal coordinate system 57 58 INTEGER, PARAMETER :: & 59 jphgr_msh = 0 !: type of horizontal mesh 60 ! !: = 0 curvilinear coordinate on the sphere 61 ! !: read in coordinate.nc file 62 ! !: = 1 geographical mesh on the sphere 63 ! !: with regular grid-spacing 64 ! !: = 2 f-plane with regular grid-spacing 65 ! !: = 3 beta-plane with regular grid-spacing 66 ! !: = 4 Mercator grid with T/U point at the equator with 67 ! !: isotropic resolution (e1_deg) 48 68 49 69 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 50 70 ! The mercator grid starts only approximately at gphi0 because 51 71 ! of the constraint that the equator be a T point. 52 REAL(wp), PARAMETER :: & ! 53 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 54 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 55 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 56 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 57 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 72 73 REAL(wp), PARAMETER :: & 74 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 75 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 76 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 77 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 78 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 58 79 ! 59 ppe1_m = pp_not_used, 60 ppe2_m = pp_not_used 80 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 81 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 61 82 62 !!63 !! Vertical grid parameter for domzgr64 !! ==================================65 !!66 REAL(wp), PARAMETER :: &67 & ppsur = pp_to_be_computed , & !: Computed in domzgr, set ppdzmin and pphmax below68 & ppa0 = pp_to_be_computed , & !: " "69 & ppa1 = pp_to_be_computed , & !: " "70 !71 & ppkth = 23.563_wp , & !: (non dimensional): gives the approximate72 ! !: layer number above which stretching will73 ! !: be maximum. Usually of order jpk/2.74 & ppacr = 9.00000000000_wp !: (non dimensional): stretching factor75 ! !: for the grid. The highest zacr, the smallest76 ! !: the stretching.77 83 78 !! 79 !! If both ppa0 ppa1 and ppsur are specified to 0, then 80 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 81 !! 82 REAL(wp), PARAMETER :: & 83 & ppdzmin = 6._wp , & !: (meters) vertical thickness of the top layer 84 & pphmax = 5720._wp !: (meters) Maximum depth of the ocean gdepw(jpk) 85 !! 84 !! Coefficients associated with the vertical coordinate system 85 86 REAL(wp), PARAMETER :: & 87 & ppsur = pp_to_be_computed , & !: Computed in domzgr, set ppdzmin and pphmax below 88 & ppa0 = pp_to_be_computed , & !: " " 89 & ppa1 = pp_to_be_computed , & !: " " 90 & ppkth = 23.563_wp , & !: (non dimensional): gives the approximate 91 ! !: layer number above which stretching will 92 ! !: be maximum. Usually of order jpk/2. 93 & ppacr = 9.00000000000_wp !: (non dimensional): stretching factor 94 ! !: for the grid. The higher zacr, the smaller 95 ! !: the stretching. 96 97 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 98 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 99 100 REAL(wp), PARAMETER :: & 101 & ppdzmin = 6._wp , & !: (meters) vertical thickness of the top layer 102 & pphmax = 5720._wp !: (meters) Maximum depth of the ocean gdepw(jpk) 86 103 LOGICAL, PARAMETER :: & 87 104 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates … … 90 107 & ppkth2 = pp_not_used , & !: 91 108 & ppacr2 = pp_not_used !: 92 93 109 !!--------------------------------------------------------------------- -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_EEL_R2.h90
r2715 r4229 8 8 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 9 9 !!---------------------------------------------------------------------- 10 CHARACTER (len=16) &10 CHARACTER (len=16) & 11 11 #if !defined key_agrif 12 , PARAMETER &12 , PARAMETER & 13 13 #endif 14 :: &15 cp_cfg = "eel" !: name of the configuration16 INTEGER &14 :: & 15 cp_cfg = "eel" !: Name of the configuration 16 INTEGER & 17 17 #if !defined key_agrif 18 , PARAMETER &18 , PARAMETER & 19 19 #endif 20 :: &21 jp_cfg = 2 , & !: resolution of the configuration (km)20 :: & 21 jp_cfg = 2 , & !: Resolution of the configuration (km) 22 22 23 ! data size !!! * size of all the input files*24 jpidta = 83, & !: 1st horizontal dimension ( >= jpi)25 jpjdta = 242, & !: 2nd " " ( >= jpj)26 jpkdta = 30, & !: number of levels ( >= jpk)23 ! Data domain size !!! * Size of all input files * 24 jpidta = 83 , & !: 1st lateral dimension ( >= jpiglo ) 25 jpjdta = 242 , & !: 2nd lateral dimension ( >= jpjglo ) 26 jpkdta = 30 , & !: Number of levels ( >= jpk ) 27 27 28 ! global domain size !!! * full domain * 29 jpiglo = jpidta, & !: 1st dimension of global domain --> i30 jp jglo = jpjdta, & !: 2nd " " --> j31 ! zoom starting position32 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom33 jp jzoom = 1 , & !: in data indices28 #if defined key_c1d 29 ! Zoom domain size !!! * C1D zoom * 30 jpiglo = 3 , & !: 1st dimension of global domain --> i 31 jpjglo = 3 , & !: 2nd dimension of global domain --> j 32 ! Domain characteristics 33 jperio = 0 !: Lateral cond. type (between 0 and 6) 34 34 35 INTEGER & 36 :: & 37 ! Starting position of the zoom 38 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 39 jpjzoom = 1 !: in data domain indices 40 #else 41 ! Global domain size !!! * Global domain * 42 jpiglo = jpidta, & !: 1st dimension of global domain --> i 43 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 44 ! Starting position of the zoom 45 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 46 jpjzoom = 1 , & !: in data domain indices 35 47 ! Domain characteristics 36 jperio = 1 !: lateral cond. type (between 0 and 6) 48 jperio = 1 !: Lateral cond. type (between 0 and 6) 49 #endif 50 37 51 38 52 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 39 53 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 40 REAL(wp), PARAMETER :: & !: 41 pp_not_used = 999999._wp , & !: ??? 42 pp_to_be_computed = 0._wp !: ??? 43 !! 44 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 45 !! 46 INTEGER,PARAMETER :: & !: 47 jphgr_msh = 3 !: type of horizontal mesh 48 ! ! = 0 curvilinear coordinate on the sphere 49 ! ! read in coordinate.nc file 50 ! ! = 1 geographical mesh on the sphere 51 ! ! with regular grid-spacing 52 ! ! = 2 f-plane with regular grid-spacing 53 ! ! = 3 beta-plane with regular grid-spacing 54 ! ! = 4 Mercator grid with T/U point at the equator with 55 ! ! isotropic resolution (e1_deg) 54 55 REAL(wp), PARAMETER :: & 56 pp_not_used = 999999._wp , & !: 57 pp_to_be_computed = 0._wp !: 58 59 60 !! Coefficients associated with the horizontal coordinate system 61 62 INTEGER, PARAMETER :: & 63 jphgr_msh = 3 !: type of horizontal mesh 64 ! !: = 0 curvilinear coordinate on the sphere 65 ! !: read in coordinate.nc file 66 ! !: = 1 geographical mesh on the sphere 67 ! !: with regular grid-spacing 68 ! !: = 2 f-plane with regular grid-spacing 69 ! !: = 3 beta-plane with regular grid-spacing 70 ! !: = 4 Mercator grid with T/U point at the equator with 71 ! !: isotropic resolution (e1_deg) 56 72 57 73 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 58 74 ! The mercator grid starts only approximately at gphi0 because 59 75 ! of the constraint that the equator be a T point. 60 REAL(wp) ,PARAMETER :: & !: 61 ppglam0 = 0.0_wp, & !: longitude of first raw and column T-point (jphgr_msh = 1) 62 ppgphi0 = 35.0_wp, & !: latitude of first raw and column T-point (jphgr_msh = 1) 63 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 64 ppe1_deg = pp_not_used , & !: zonal grid-spacing (degrees) 65 ppe2_deg = pp_not_used , & !: meridional grid-spacing (degrees) 76 77 REAL(wp), PARAMETER :: & 78 ppglam0 = 0.0_wp , & !: longitude of first raw and column T-point (jphgr_msh = 1) 79 ppgphi0 = 35.0_wp , & !: latitude of first raw and column T-point (jphgr_msh = 1) 80 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 81 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 82 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 66 83 ! 67 ppe1_m = 2000.0_wp ,& !: zonal grid-spacing (meters )84 ppe1_m = 2000.0_wp , & !: zonal grid-spacing (meters ) 68 85 ppe2_m = 2000.0_wp !: meridional grid-spacing (meters ) 69 !! 86 87 70 88 !! Coefficients associated with the vertical coordinate system 71 !! 72 REAL(wp) &89 90 REAL(wp) & 73 91 #if !defined key_agrif 74 , PARAMETER &92 , PARAMETER & 75 93 #endif 76 :: & !: 77 & ppsur = -2033.194295283385_wp , & !: Computed in domzgr 78 & ppa0 = 155.8325369664153_wp , & !: 79 & ppa1 = 146.3615918601890_wp , & !: 80 ! 81 & ppkth = 17.28520372419791_wp , & !: (non dimensional): gives the approximate 94 :: & 95 & ppsur = -2033.194295283385_wp , & !: Computed in domzgr, set ppdzmin, pphmax below 96 & ppa0 = 155.8325369664153_wp , & !: 97 & ppa1 = 146.3615918601890_wp , & !: 98 & ppkth = 17.28520372419791_wp , & !: (non dimensional): gives the approximate 82 99 ! !: layer number above which stretching will 83 100 ! !: be maximum. Usually of order jpk/2. 84 & ppacr = 5.000000000000000_wp!: (non dimensional): stretching factor85 ! !: for the grid. The highe st zacr, the smallest101 & ppacr = 5.000000000000000_wp !: (non dimensional): stretching factor 102 ! !: for the grid. The higher zacr, the smaller 86 103 ! !: the stretching. 87 104 88 !! 89 !! If both ppa0 ppa1 and ppsur are specified to 0, then 90 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 91 !! 92 REAL(wp), PARAMETER :: & 105 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 106 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 107 108 REAL(wp), PARAMETER :: & 93 109 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 94 110 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 95 LOGICAL, PARAMETER :: &111 LOGICAL, PARAMETER :: & 96 112 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 97 REAL(wp), PARAMETER :: &113 REAL(wp), PARAMETER :: & 98 114 & ppa2 = pp_not_used , & !: Double tanh function parameters 99 115 & ppkth2 = pp_not_used , & !: -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_EEL_R5.h90
r2715 r4229 8 8 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 9 9 !!---------------------------------------------------------------------- 10 CHARACTER (len=16) &10 CHARACTER (len=16) & 11 11 #if !defined key_agrif 12 , PARAMETER &12 , PARAMETER & 13 13 #endif 14 :: &15 cp_cfg = "eel" !: name of the configuration16 INTEGER &14 :: & 15 cp_cfg = "eel" !: Name of the configuration 16 INTEGER & 17 17 #if !defined key_agrif 18 , PARAMETER &18 , PARAMETER & 19 19 #endif 20 :: &21 jp_cfg = 5 , & !: resolution of the configuration (km)20 :: & 21 jp_cfg = 5 , & !: Resolution of the configuration (km) 22 22 23 ! data size !!! * size of all the input files24 jpidta = 66 , & !: first horizontal dimension > or = to jpi25 jpjdta = 66 , & !: second > or = to jpj26 jpkdta = 31 , & !: number of levels > or = to jpk23 ! Data domain size !!! * Size of all input files * 24 jpidta = 66 , & !: 1st lateral dimension ( >= jpiglo ) 25 jpjdta = 66 , & !: 2nd lateral dimension ( >= jpjglo ) 26 jpkdta = 31 , & !: Number of levels ( >= jpk ) 27 27 28 ! total domain size !!! * full domain * 29 jpiglo = jpidta, & !: first dimension of global domain --> i30 jp jglo = jpjdta, & !: second dimension of global domain --> j31 ! zoom starting position32 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom33 jp jzoom = 1 , & !: in data indices28 #if defined key_c1d 29 ! Zoom domain size !!! * C1D zoom * 30 jpiglo = 3 , & !: 1st dimension of global domain --> i 31 jpjglo = 3 , & !: 2nd dimension of global domain --> j 32 ! Domain characteristics 33 jperio = 0 !: Lateral cond. type (between 0 and 6) 34 34 35 INTEGER & 36 :: & 37 ! Starting position of the zoom 38 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 39 jpjzoom = 1 !: in data domain indices 40 #else 41 ! Global domain size !!! * Global domain * 42 jpiglo = jpidta, & !: 1st dimension of global domain --> i 43 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 44 ! Starting position of the zoom 45 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 46 jpjzoom = 1 , & !: in data domain indices 35 47 ! Domain characteristics 36 jperio = 1 !: lateral cond. type (between 0 and 6) 48 jperio = 1 !: Lateral cond. type (between 0 and 6) 49 #endif 50 37 51 38 52 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 39 53 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 40 REAL(wp), PARAMETER :: & !:41 pp_not_used = 999999._wp , & !:42 pp_to_be_computed = 0._wp !:43 54 44 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 55 REAL(wp), PARAMETER :: & 56 pp_not_used = 999999._wp , & !: 57 pp_to_be_computed = 0._wp !: 45 58 46 INTEGER,PARAMETER :: & !: 47 jphgr_msh = 2 !: type of horizontal mesh 48 ! ! = 0 curvilinear coordinate on the sphere 49 ! ! read in coordinate.nc file 50 ! ! = 1 geographical mesh on the sphere 51 ! ! with regular grid-spacing 52 ! ! = 2 f-plane with regular grid-spacing 53 ! ! = 3 beta-plane with regular grid-spacing 54 ! ! = 4 Mercator grid with T/U point at the equator with 55 ! ! isotropic resolution (e1_deg) 59 60 !! Coefficients associated with the horizontal coordinate system 61 62 INTEGER, PARAMETER :: & 63 jphgr_msh = 2 !: type of horizontal mesh 64 ! !: = 0 curvilinear coordinate on the sphere 65 ! !: read in coordinate.nc file 66 ! !: = 1 geographical mesh on the sphere 67 ! !: with regular grid-spacing 68 ! !: = 2 f-plane with regular grid-spacing 69 ! !: = 3 beta-plane with regular grid-spacing 70 ! !: = 4 Mercator grid with T/U point at the equator with 71 ! !: isotropic resolution (e1_deg) 56 72 57 73 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 58 74 ! The mercator grid starts only approximately at gphi0 because 59 75 ! of the constraint that the equator be a T point. 60 REAL(wp) & 76 77 REAL(wp) & 61 78 #if !defined key_agrif 62 , PARAMETER &79 , PARAMETER & 63 80 #endif 64 :: & !:65 ppglam0 = 0.0_wp, & !: longitude of first raw and column T-point(jphgr_msh = 1)66 ppgphi0 = 43.436430714_wp, & !: latitude of first raw and column T-point(jphgr_msh = 1)67 ! !latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3)68 ppe1_deg = pp_not_used ,& !: zonal grid-spacing (degrees)69 ppe2_deg = pp_not_used ,& !: meridional grid-spacing (degrees)81 :: & 82 ppglam0 = 0.0_wp , & !: longitude of first raw and column T-point (jphgr_msh = 1) 83 ppgphi0 = 43.436430714_wp, & !: latitude of first raw and column T-point (jphgr_msh = 1) 84 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 85 ppe1_deg = pp_not_used , & !: zonal grid-spacing (degrees) 86 ppe2_deg = pp_not_used , & !: meridional grid-spacing (degrees) 70 87 ! 71 ppe1_m = 8000.0_wp, & !: zonal grid-spacing (meters) 72 ppe2_m = 8000.0_wp !: meridional grid-spacing (meters) 73 !! 88 ppe1_m = 8000.0_wp , & !: zonal grid-spacing (meters ) 89 ppe2_m = 8000.0_wp !: meridional grid-spacing (meters ) 90 91 74 92 !! Coefficients associated with the vertical coordinate system 75 !! 76 REAL(wp), PARAMETER :: & !:77 & ppsur = -4762.96143546300_wp, & !: Computed in domzgr, set ppdzmin, pphmax below93 94 REAL(wp), PARAMETER :: & 95 & ppsur = -4762.96143546300_wp , & !: Computed in domzgr, set ppdzmin, pphmax below 78 96 & ppa0 = 255.58049070440_wp , & !: 79 97 & ppa1 = 245.58132232490_wp , & !: 80 ! 81 & ppkth = 21.43336197938_wp , & !: (non dimensional): gives the approximate 98 & ppkth = 21.43336197938_wp , & !: (non dimensional): gives the approximate 82 99 ! !: layer number above which stretching will 83 100 ! !: be maximum. Usually of order jpk/2. 84 & ppacr = 3.00000000000_wp!: (non dimensional): stretching factor85 ! !: for the grid. The highe st zacr, the smallest101 & ppacr = 3.00000000000_wp !: (non dimensional): stretching factor 102 ! !: for the grid. The higher zacr, the smaller 86 103 ! !: the stretching. 87 104 88 !! 89 !! If both ppa0 ppa1 and ppsur are specified to 0, then 90 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 91 !! 92 REAL(wp), PARAMETER :: & !: 105 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 106 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 107 108 REAL(wp), PARAMETER :: & 93 109 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 94 110 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 95 LOGICAL, PARAMETER :: &111 LOGICAL, PARAMETER :: & 96 112 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 97 REAL(wp), PARAMETER :: &113 REAL(wp), PARAMETER :: & 98 114 & ppa2 = pp_not_used , & !: Double tanh function parameters 99 115 & ppkth2 = pp_not_used , & !: -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_EEL_R6.h90
r2715 r4229 8 8 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 9 9 !!---------------------------------------------------------------------- 10 CHARACTER (len=16) &10 CHARACTER (len=16) & 11 11 #if !defined key_agrif 12 , PARAMETER &12 , PARAMETER & 13 13 #endif 14 :: &15 cp_cfg = "eel" !: name of the configuration16 INTEGER &14 :: & 15 cp_cfg = "eel" !: Name of the configuration 16 INTEGER & 17 17 #if !defined key_agrif 18 , PARAMETER &18 , PARAMETER & 19 19 #endif 20 :: &21 jp_cfg = 6 , & !: resolution of the configuration (km)20 :: & 21 jp_cfg = 6 , & !: Resolution of the configuration (km) 22 22 23 ! data size !!! * size of all the input files*24 jpidta = 29, & !: 1st lateral dimension ( >= jpi)25 jpjdta = 83, & !: 2nd " " ( >= jpj)26 jpkdta = 30, & !: number of levels ( >= jpk)23 ! Data domain size !!! * Size of all input files * 24 jpidta = 29 , & !: 1st lateral dimension ( >= jpiglo ) 25 jpjdta = 83 , & !: 2nd lateral dimension ( >= jpjglo ) 26 jpkdta = 30 , & !: Number of levels ( >= jpk ) 27 27 28 ! global domain size !!! * full domain * 29 jpiglo = jpidta, & !: 1st dimension of global domain --> i30 jp jglo = jpjdta, & !: 2nd " " --> j31 ! starting position of the zoom32 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom33 jp jzoom = 1 , & !: in data domain indices28 #if defined key_c1d 29 ! Zoom domain size !!! * C1D zoom * 30 jpiglo = 3 , & !: 1st dimension of global domain --> i 31 jpjglo = 3 , & !: 2nd dimension of global domain --> j 32 ! Domain characteristics 33 jperio = 0 !: Lateral cond. type (between 0 and 6) 34 34 35 INTEGER & 36 :: & 37 ! Starting position of the zoom 38 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 39 jpjzoom = 1 !: in data domain indices 40 #else 41 ! Global domain size !!! * Global domain * 42 jpiglo = jpidta, & !: 1st dimension of global domain --> i 43 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 44 ! Starting position of the zoom 45 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 46 jpjzoom = 1 , & !: in data domain indices 35 47 ! Domain characteristics 36 jperio = 1 !: lateral cond. type (between 0 and 6) 48 jperio = 1 !: Lateral cond. type (between 0 and 6) 49 #endif 50 37 51 38 52 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 39 53 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 40 REAL(wp), PARAMETER :: & !:41 pp_not_used = 999999._wp , & !: ???42 pp_to_be_computed = 0._wp !: ???43 54 44 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 55 REAL(wp), PARAMETER :: & 56 pp_not_used = 999999._wp , & !: 57 pp_to_be_computed = 0._wp !: 45 58 46 INTEGER,PARAMETER :: & !: 47 jphgr_msh = 3 !: type of horizontal mesh 48 ! ! = 0 curvilinear coordinate on the sphere 49 ! ! read in coordinate.nc file 50 ! ! = 1 geographical mesh on the sphere 51 ! ! with regular grid-spacing 52 ! ! = 2 f-plane with regular grid-spacing 53 ! ! = 3 beta-plane with regular grid-spacing 54 ! ! = 4 Mercator grid with T/U point at the equator with 55 ! ! isotropic resolution (e1_deg) 59 60 !! Coefficients associated with the horizontal coordinate system 61 62 INTEGER, PARAMETER :: & 63 jphgr_msh = 3 !: type of horizontal mesh 64 ! !: = 0 curvilinear coordinate on the sphere 65 ! !: read in coordinate.nc file 66 ! !: = 1 geographical mesh on the sphere 67 ! !: with regular grid-spacing 68 ! !: = 2 f-plane with regular grid-spacing 69 ! !: = 3 beta-plane with regular grid-spacing 70 ! !: = 4 Mercator grid with T/U point at the equator with 71 ! !: isotropic resolution (e1_deg) 56 72 57 73 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 58 74 ! The mercator grid starts only approximately at gphi0 because 59 75 ! of the constraint that the equator be a T point. 60 REAL(wp) & 76 77 REAL(wp) & 61 78 #if !defined key_agrif 62 , PARAMETER &79 , PARAMETER & 63 80 #endif 64 :: & !:65 ppglam0 = 0.0_wp, & !: longitude of first raw and column T-point(jphgr_msh = 1)66 ppgphi0 = 35.0_wp, & !: latitude of first raw and column T-point(jphgr_msh = 1)67 ! ! 68 ppe1_deg = pp_not_used, 69 ppe2_deg = pp_not_used, 81 :: & 82 ppglam0 = 0.0_wp , & !: longitude of first raw and column T-point (jphgr_msh = 1) 83 ppgphi0 = 35.0_wp , & !: latitude of first raw and column T-point (jphgr_msh = 1) 84 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 85 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 86 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 70 87 ! 71 ppe1_m = 6000.0_wp ,& !: zonal grid-spacing (meters )88 ppe1_m = 6000.0_wp , & !: zonal grid-spacing (meters ) 72 89 ppe2_m = 6000.0_wp !: meridional grid-spacing (meters ) 90 73 91 74 92 !! Coefficients associated with the vertical coordinate system 75 93 76 REAL(wp), PARAMETER :: & !: 77 & ppsur = -2033.194295283385_wp , & !: Computed in domzgr 78 & ppa0 = 155.8325369664153_wp , & !: 79 & ppa1 = 146.3615918601890_wp , & !: 80 ! 81 & ppkth = 17.28520372419791_wp , & !: (non dimensional): gives the approximate 94 REAL(wp), PARAMETER :: & 95 & ppsur = -2033.194295283385_wp , & !: Computed in domzgr, set ppdzmin, pphmax below 96 & ppa0 = 155.8325369664153_wp , & !: 97 & ppa1 = 146.3615918601890_wp , & !: 98 & ppkth = 17.28520372419791_wp , & !: (non dimensional): gives the approximate 82 99 ! !: layer number above which stretching will 83 100 ! !: be maximum. Usually of order jpk/2. 84 & ppacr = 5.000000000000000_wp!: (non dimensional): stretching factor85 ! !: for the grid. The highe st zacr, the smallest101 & ppacr = 5.000000000000000_wp !: (non dimensional): stretching factor 102 ! !: for the grid. The higher zacr, the smaller 86 103 ! !: the stretching. 87 104 105 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 106 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 88 107 89 !! If both ppa0 ppa1 and ppsur are specified to 0, then 90 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 91 !! 92 REAL(wp), PARAMETER :: & !: 108 REAL(wp), PARAMETER :: & 93 109 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 94 110 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 95 LOGICAL, PARAMETER :: &111 LOGICAL, PARAMETER :: & 96 112 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 97 REAL(wp), PARAMETER :: &113 REAL(wp), PARAMETER :: & 98 114 & ppa2 = pp_not_used , & !: Double tanh function parameters 99 115 & ppkth2 = pp_not_used , & !: -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_GYRE.h90
r2715 r4229 8 8 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 9 9 !!---------------------------------------------------------------------- 10 CHARACTER (len=16) &10 CHARACTER (len=16) & 11 11 #if !defined key_agrif 12 , PARAMETER &12 , PARAMETER & 13 13 #endif 14 :: &15 cp_cfg = "gyre" !: name of the configuration16 INTEGER &14 :: & 15 cp_cfg = "gyre" !: Name of the configuration 16 INTEGER & 17 17 #if !defined key_agrif 18 , PARAMETER &18 , PARAMETER & 19 19 #endif 20 :: &21 jp_cfg = 1 , & !:20 :: & 21 jp_cfg = 1 , & !: Resolution of the configuration (degrees) 22 22 23 ! data size !!! * size of all the input files*24 jpidta = 30*jp_cfg+2, & !: 1st horizontal dimension ( >= jpi)25 jpjdta = 20*jp_cfg+2, & !: 2nd " " ( >= jpj)26 jpkdta = 31, & !: number of levels ( >= jpk)23 ! Data domain size !!! * Size of all input files * 24 jpidta = 30*jp_cfg+2, & !: 1st lateral dimension ( >= jpiglo ) 25 jpjdta = 20*jp_cfg+2, & !: 2nd lateral dimension ( >= jpjglo ) 26 jpkdta = 31 , & !: Number of levels ( >= jpk ) 27 27 28 ! global domain size !!! * full domain * 29 jpiglo = jpidta, & !: 1st dimension of global domain --> i30 jp jglo = jpjdta, & !: 2nd " " --> j31 ! zoom starting position32 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom33 jp jzoom = 1 , & !: in data indices28 #if defined key_c1d 29 ! Zoom domain size !!! * C1D zoom * 30 jpiglo = 3 , & !: 1st dimension of global domain --> i 31 jpjglo = 3 , & !: 2nd dimension of global domain --> j 32 ! Domain characteristics 33 jperio = 0 !: Lateral cond. type (between 0 and 6) 34 34 35 INTEGER & 36 :: & 37 ! Starting position of the zoom 38 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 39 jpjzoom = 1 !: in data domain indices 40 #else 41 ! Global domain size !!! * Global domain * 42 jpiglo = jpidta, & !: 1st dimension of global domain --> i 43 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 44 ! Starting position of the zoom 45 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 46 jpjzoom = 1 , & !: in data domain indices 35 47 ! Domain characteristics 36 jperio = 0 !: lateral cond. type (between 0 and 6) 48 jperio = 0 !: Lateral cond. type (between 0 and 6) 49 #endif 50 37 51 38 52 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 39 53 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 40 REAL(wp), PARAMETER :: & !: 41 pp_not_used = 999999._wp , & !: ??? 42 pp_to_be_computed = 0._wp !: ??? 43 !! 44 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 45 !! 46 INTEGER,PARAMETER :: & !: 47 jphgr_msh = 5 !: type of horizontal mesh 48 ! ! = 0 curvilinear coordinate on the sphere 49 ! ! read in coordinate.nc file 50 ! ! = 1 geographical mesh on the sphere 51 ! ! with regular grid-spacing 52 ! ! = 2 f-plane with regular grid-spacing 53 ! ! = 3 beta-plane with regular grid-spacing 54 ! ! = 4 Mercator grid with T/U point at the equator with 55 ! ! isotropic resolution (e1_deg) 56 ! ! =5 beta-plane with regular grid-spacing and rotated domain (GYRE configuration) 54 55 REAL(wp), PARAMETER :: & 56 pp_not_used = 999999._wp , & !: 57 pp_to_be_computed = 0._wp !: 58 59 60 !! Coefficients associated with the horizontal coordinate system 61 62 INTEGER, PARAMETER :: & 63 jphgr_msh = 5 !: type of horizontal mesh 64 ! !: = 0 curvilinear coordinate on the sphere 65 ! !: read in coordinate.nc file 66 ! !: = 1 geographical mesh on the sphere 67 ! !: with regular grid-spacing 68 ! !: = 2 f-plane with regular grid-spacing 69 ! !: = 3 beta-plane with regular grid-spacing 70 ! !: = 4 Mercator grid with T/U point at the equator with 71 ! !: isotropic resolution (e1_deg) 72 ! !: = 5 beta-plane with regular grid-spacing and rotated domain (GYRE configuration) 57 73 58 74 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 59 75 ! The mercator grid starts only approximately at gphi0 because 60 76 ! of the constraint that the equator be a T point. 61 REAL(wp) & 77 78 REAL(wp) & 62 79 #if !defined key_agrif 63 , PARAMETER &80 , PARAMETER & 64 81 #endif 65 :: & !:66 ppglam0 = 0.0_wp, & !: longitude of first raw and column T-point(jphgr_msh = 1)67 ppgphi0 = 29.0_wp, & !: latitude of first raw and column T-point(jphgr_msh = 1)68 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3)69 ppe1_deg = pp_not_used ,& !: zonal grid-spacing (degrees)70 ppe2_deg = pp_not_used ,& !: meridional grid-spacing (degrees)82 :: & 83 ppglam0 = 0.0_wp , & !: longitude of first raw and column T-point (jphgr_msh = 1) 84 ppgphi0 = 29.0_wp , & !: latitude of first raw and column T-point (jphgr_msh = 1) 85 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 86 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 87 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 71 88 ! 72 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 73 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 74 !! 89 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 90 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 91 92 75 93 !! Coefficients associated with the vertical coordinate system 76 !!77 94 78 REAL(wp), PARAMETER :: & !: 79 & ppsur = -2033.194295283385_wp , & !: 80 & ppa0 = 155.8325369664153_wp , & !: 81 & ppa1 = 146.3615918601890_wp , & !: 82 ! 83 & ppkth = 17.28520372419791_wp , & !: (non dimensional): gives the approximate 84 ! ! layer number above which stretching will 85 ! ! be maximum. Usually of order jpk/2. 86 & ppacr = 5.000000000000000_wp !: (non dimensional): stretching factor 87 ! ! for the grid. The highest zacr, the smallest 88 ! ! the stretching. 95 REAL(wp), PARAMETER :: & 96 & ppsur = -2033.194295283385_wp , & !: 97 & ppa0 = 155.8325369664153_wp , & !: 98 & ppa1 = 146.3615918601890_wp , & !: 99 & ppkth = 17.28520372419791_wp , & !: (non dimensional): gives the approximate 100 ! !: layer number above which stretching will 101 ! !: be maximum. Usually of order jpk/2. 102 & ppacr = 5.000000000000000_wp !: (non dimensional): stretching factor 103 ! !: for the grid. The higher zacr, the smaller 104 ! !: the stretching. 89 105 90 !! 91 !! If all ppa0 ppa1 and ppsur are specified to 0, then 92 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 93 !! 94 REAL(wp), PARAMETER :: & !: 95 & ppdzmin = pp_not_used , & !: (meters): depth of the top (first) model layer 96 ! ! depth of second "w" level 97 & pphmax = pp_not_used !: (meters): maximum depth of the ocean 98 ! ! depth of the last "w" level 99 LOGICAL, PARAMETER :: & 106 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 107 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 108 109 REAL(wp), PARAMETER :: & 110 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 111 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 112 LOGICAL, PARAMETER :: & 100 113 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 101 REAL(wp), PARAMETER :: &114 REAL(wp), PARAMETER :: & 102 115 & ppa2 = pp_not_used , & !: Double tanh function parameters 103 116 & ppkth2 = pp_not_used , & !: 104 117 & ppacr2 = pp_not_used !: 105 106 118 !!--------------------------------------------------------------------- -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_ORCA_R025.h90
r2715 r4229 9 9 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 10 10 !!---------------------------------------------------------------------- 11 CHARACTER (len=16) &11 CHARACTER (len=16) & 12 12 #if !defined key_agrif 13 , PARAMETER &13 , PARAMETER & 14 14 #endif 15 :: &16 cp_cfg = "orca" !: name of the configuration17 INTEGER &15 :: & 16 cp_cfg = "orca" !: Name of the configuration 17 INTEGER & 18 18 #if !defined key_agrif 19 , PARAMETER &19 , PARAMETER & 20 20 #endif 21 :: & 22 jp_cfg = 025 , & !: resolution of the configuration (degrees) 23 ! Original data size 24 jpidta = 1442, & !: first horizontal dimension > or = to jpi 25 jpjdta = 1021, & !: second > or = to jpj 21 :: & 22 jp_cfg = 025 , & !: Resolution of the configuration (degrees) 23 24 ! Data domain size !!! * Size of all input files * 25 jpidta = 1442 , & !: 1st lateral dimension ( >= jpiglo ) 26 jpjdta = 1021 , & !: 2nd lateral dimension ( >= jpjglo ) 26 27 #if key_orca_r025==75 27 jpkdta = 75 , & !: number of levels > or = to jpk28 jpkdta = 75 , & !: Number of levels ( >= jpk ) 28 29 #else 29 jpkdta = 46 , & !: number of levels > or = to jpk30 jpkdta = 46 , & !: Number of levels ( >= jpk ) 30 31 #endif 31 ! total domain matrix size 32 jpiglo = jpidta, & !: first dimension of global domain --> i 33 jpjglo = jpjdta, & !: second dimension of global domain --> j 34 ! starting position of the zoom 35 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom 36 jpjzoom = 1 , & !: in data indices 32 33 #if defined key_c1d 34 ! Zoom domain size !!! * C1D zoom * 35 jpiglo = 3 , & !: 1st dimension of global domain --> i 36 jpjglo = 3 , & !: 2nd dimension of global domain --> j 37 37 ! Domain characteristics 38 jperio = 4 !: lateral cond. type (between 0 and 6) 38 jperio = 0 !: Lateral cond. type (between 0 and 6) 39 40 INTEGER & 41 :: & 42 ! Starting position of the zoom 43 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 44 jpjzoom = 1 !: in data domain indices 45 #else 46 ! Global domain size !!! * Global domain * 47 jpiglo = jpidta, & !: 1st dimension of global domain --> i 48 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 49 ! Starting position of the zoom 50 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 51 jpjzoom = 1 , & !: in data domain indices 52 ! Domain characteristics 53 jperio = 4 !: Lateral cond. type (between 0 and 6) 54 #endif 55 39 56 40 57 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 41 58 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 42 REAL,PARAMETER :: pp_not_used = 999999_wp , & 43 & pp_to_be_computed = 0._wp 44 !! 45 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 46 !! 47 INTEGER, PARAMETER :: & ! 48 jphgr_msh = 0 !: type of horizontal mesh 49 ! ! = 0 curvilinear coordinate on the sphere 50 ! ! read in coordinate.nc file 51 ! ! = 1 geographical mesh on the sphere 52 ! ! with regular grid-spacing 53 ! ! = 2 f-plane with regular grid-spacing 54 ! ! = 3 beta-plane with regular grid-spacing 55 ! ! = 4 Mercator grid with T/U point at the equator with 56 ! ! isotropic resolution (e1_deg) 59 60 REAL(wp), PARAMETER :: & 61 pp_not_used = 999999._wp , & !: 62 pp_to_be_computed = 0._wp !: 63 64 65 !! Coefficients associated with the horizontal coordinate system 66 67 INTEGER, PARAMETER :: & 68 jphgr_msh = 0 !: type of horizontal mesh 69 ! !: = 0 curvilinear coordinate on the sphere 70 ! !: read in coordinate.nc file 71 ! !: = 1 geographical mesh on the sphere 72 ! !: with regular grid-spacing 73 ! !: = 2 f-plane with regular grid-spacing 74 ! !: = 3 beta-plane with regular grid-spacing 75 ! !: = 4 Mercator grid with T/U point at the equator with 76 ! !: isotropic resolution (e1_deg) 57 77 58 78 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 59 79 ! The mercator grid starts only approximately at gphi0 because 60 80 ! of the constraint that the equator be a T point. 61 REAL(wp), PARAMETER :: & ! 62 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 63 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 64 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 65 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 66 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 81 82 REAL(wp), PARAMETER :: & 83 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 84 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 85 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 86 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 87 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 67 88 ! 68 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 69 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 89 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 90 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 91 70 92 71 93 !! Coefficients associated with the vertical coordinate system 72 94 73 95 #if key_orca_r025==75 74 REAL(wp), PARAMETER :: &75 & ppsur = -3958.951371276829_wp, & !: ORCA r025 coefficients96 REAL(wp), PARAMETER :: & 97 & ppsur = -3958.951371276829_wp , & !: ORCA r025 coefficients 76 98 & ppa0 = 103.9530096000000_wp , & !: (75 levels case) 77 99 & ppa1 = 2.415951269000000_wp , & !: … … 79 101 ! !: layer number above which stretching will 80 102 ! !: be maximum. Usually of order jpk/2. 81 & ppacr = 7.00000000000_wp!: (non dimensional): stretching factor103 & ppacr = 7.00000000000_wp !: (non dimensional): stretching factor 82 104 ! !: for the grid. The higher zacr, the smaller 83 105 ! !: the stretching. 84 !! 85 !! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then86 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr87 !! 106 107 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 108 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 109 88 110 REAL(wp), PARAMETER :: & 89 111 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 90 112 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 91 !!92 113 LOGICAL, PARAMETER :: & 93 114 & ldbletanh = .TRUE. !: Use/do not use double tanf function for vertical coordinates 94 115 REAL(wp), PARAMETER :: & 95 & ppa2 = 100.7609285000000_wp , & !: Double tanh function parameters 96 & ppkth2= 48.02989372000000_wp , & !: 97 & ppacr2= 13.00000000000_wp !: 98 ! 116 & ppa2 = 100.7609285000000_wp , & !: Double tanh function parameters 117 & ppkth2 = 48.02989372000000_wp , & !: 118 & ppacr2 = 13.00000000000_wp !: 99 119 #else 100 REAL(wp), PARAMETER :: & 101 & ppsur = pp_to_be_computed , & !: Computed in domzgr, set ppdzmin and pphmax below 102 & ppa0 = pp_to_be_computed , & !: " " 103 & ppa1 = pp_to_be_computed , & !: " " 104 ! 105 & ppkth = 23.563_wp , & !: (non dimensional): gives the approximate 120 REAL(wp), PARAMETER :: & 121 & ppsur = pp_to_be_computed , & !: Computed in domzgr, set ppdzmin and pphmax below 122 & ppa0 = pp_to_be_computed , & !: " " 123 & ppa1 = pp_to_be_computed , & !: " " 124 & ppkth = 23.563_wp , & !: (non dimensional): gives the approximate 106 125 ! !: layer number above which stretching will 107 126 ! !: be maximum. Usually of order jpk/2. 108 127 & ppacr = 9.00000000000_wp !: (non dimensional): stretching factor 109 ! !: for the grid. The highe st zacr, the smallest128 ! !: for the grid. The higher zacr, the smaller 110 129 ! !: the stretching. 111 !! 112 !! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then113 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr114 !! 130 131 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 132 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 133 115 134 REAL(wp), PARAMETER :: & 116 & ppdzmin = 6._wp ,& !: (meters) vertical thickness of the top layer135 & ppdzmin = 6._wp , & !: (meters) vertical thickness of the top layer 117 136 & pphmax = 5750._wp !: (meters) Maximum depth of the ocean gdepw(jpk) 118 !!119 137 LOGICAL, PARAMETER :: & 120 138 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_ORCA_R05.h90
r2715 r4229 9 9 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 10 10 !!---------------------------------------------------------------------- 11 CHARACTER (len=16) &11 CHARACTER (len=16) & 12 12 #if !defined key_agrif 13 , PARAMETER &13 , PARAMETER & 14 14 #endif 15 :: &16 cp_cfg = "orca" !: name of the configuration17 INTEGER &15 :: & 16 cp_cfg = "orca" !: Name of the configuration 17 INTEGER & 18 18 #if !defined key_agrif 19 , PARAMETER &19 , PARAMETER & 20 20 #endif 21 :: &22 jp_cfg = 05 , & !: resolution of the configuration (degrees)21 :: & 22 jp_cfg = 05 , & !: Resolution of the configuration (degrees) 23 23 24 ! data size !!! * size of all the input files*25 jpidta = 722, & !: 1st lateral dimension > or = to jpiglo26 jpjdta = 511, & !: 2nd " " > or = to jpjglo27 jpkdta = 31 !: number of levels > or = to jpkglo24 ! Data domain size !!! * Size of all input files * 25 jpidta = 722 , & !: 1st lateral dimension ( >= jpiglo ) 26 jpjdta = 511 , & !: 2nd lateral dimension ( >= jpjglo ) 27 jpkdta = 31 , & !: Number of levels ( >= jpk ) 28 28 29 #if defined key_antarctic 30 ! zoom domain size !!! * antarctic zoom * 31 INTEGER & 32 #if !defined key_agrif 33 , PARAMETER & 29 #if defined key_c1d 30 ! Zoom domain size !!! * C1D zoom * 31 jpiglo = 3 , & !: 1st dimension of global domain --> i 32 jpjglo = 3 , & !: 2nd dimension of global domain --> j 33 ! Domain characteristics 34 jperio = 0 !: Lateral cond. type (between 0 and 6) 35 36 INTEGER & 37 :: & 38 ! Starting position of the zoom 39 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 40 jpjzoom = 1 !: in data domain indices 41 #elif defined key_antarctic 42 ! Zoom domain size !!! * Antarctic zoom * 43 jpiglo = jpidta, & !: 1st dimension of global domain --> i 44 jpjglo = 187 , & !: 2nd dimension of global domain --> j 45 ! Starting position of the zoom 46 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 47 jpjzoom = 1 , & !: in data domain indices 48 ! Domain characteristics 49 jperio = 1 !: Lateral cond. type (between 0 and 6) 50 #elif defined key_arctic 51 ! Zoom domain size !!! * Arctic zoom * 52 jpiglo = 562 , & !: 1st dimension of global domain --> i 53 jpjglo = jpjdta-301+1,& !: 2nd dimension of global domain --> j 54 ! Starting position of the zoom 55 jpizoom = 81 , & !: Left bottom (i,j) indices of the zoom 56 jpjzoom = 301 , & !: in data domain indices 57 ! Domain characteristics 58 jperio = 5 !: Lateral cond. type (between 0 and 6) 59 #else 60 ! Global domain size !!! * Global domain * 61 jpiglo = jpidta, & !: 1st dimension of global domain --> i 62 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 63 ! Starting position of the zoom 64 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 65 jpjzoom = 1 , & !: in data domain indices 66 ! Domain characteristics 67 jperio = 6 !: Lateral cond. type (between 0 and 6) 34 68 #endif 35 :: &36 jpiglo = jpidta, & !: 1st dimension of global domain --> i37 jpjglo = 187 , & !: 2nd " " --> j38 ! starting position of the zoom39 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom40 jpjzoom = 1 , & !: in data domain indices41 ! Domain characteristics42 jperio = 1 !: lateral cond. type (between 0 and 6)43 69 44 #elif defined key_arctic45 ! zoom domain size !!! * arctic zoom *46 INTEGER &47 #if !defined key_agrif48 , PARAMETER &49 #endif50 :: &51 ! zoom domain size !!! * arctic zoom *52 jpiglo = 562, & !: 1st dimension of global domain --> i53 jpjglo = jpjdta-301+1,& !: 2nd " " --> j54 ! zoom starting position55 jpizoom = 81 , & !: left bottom (i,j) indices of the zoom56 jpjzoom = 301 , & !: in data domain indices57 ! Domain characteristics58 jperio = 5 !: lateral cond. type (between 0 and 6)59 60 #else61 ! global domain size !!! * global domain *62 INTEGER &63 #if !defined key_agrif64 , PARAMETER &65 #endif66 :: &67 jpiglo = jpidta, & !: 1st dimension of global domain --> i68 jpjglo = jpjdta, & !: 2nd " " --> j69 ! zoom starting position70 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom71 jpjzoom = 1 , & !: in data domain indices72 ! Domain characteristics73 jperio = 6 !: lateral cond. type (between 0 and 6)74 #endif75 70 76 71 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 77 72 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 78 REAL(wp), PARAMETER :: & 73 74 REAL(wp), PARAMETER :: & 79 75 pp_not_used = 999999._wp , & !: 80 pp_to_be_computed = 0._wp !:76 pp_to_be_computed = 0._wp !: 81 77 82 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 )83 78 84 INTEGER, PARAMETER :: & ! 85 jphgr_msh = 0 !: type of horizontal mesh 86 ! ! = 0 curvilinear coordinate on the sphere 87 ! ! read in coordinate.nc file 88 ! ! = 1 geographical mesh on the sphere 89 ! ! with regular grid-spacing 90 ! ! = 2 f-plane with regular grid-spacing 91 ! ! = 3 beta-plane with regular grid-spacing 92 ! ! = 4 Mercator grid with T/U point at the equator with 93 ! ! isotropic resolution (e1_deg) 79 !! Coefficients associated with the horizontal coordinate system 80 81 INTEGER, PARAMETER :: & 82 jphgr_msh = 0 !: type of horizontal mesh 83 ! !: = 0 curvilinear coordinate on the sphere 84 ! !: read in coordinate.nc file 85 ! !: = 1 geographical mesh on the sphere 86 ! !: with regular grid-spacing 87 ! !: = 2 f-plane with regular grid-spacing 88 ! !: = 3 beta-plane with regular grid-spacing 89 ! !: = 4 Mercator grid with T/U point at the equator with 90 ! !: isotropic resolution (e1_deg) 94 91 95 92 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 96 93 ! The mercator grid starts only approximately at gphi0 because 97 94 ! of the constraint that the equator be a T point. 98 REAL(wp) , PARAMETER :: & ! 99 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 100 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 101 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 102 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 103 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 95 96 REAL(wp), PARAMETER :: & 97 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 98 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 99 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 100 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 101 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 104 102 ! 105 ppe1_m = pp_not_used, 106 ppe2_m = pp_not_used 103 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 104 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 107 105 108 !! 109 !! Vertical grid parameter for domzgr 110 !! ===================================== 111 !! 112 REAL(wp), PARAMETER :: & 113 & ppsur = -4762.96143546300_wp , & !: ORCA r4, r2 and r05 coefficients 106 107 !! Coefficients associated with the vertical coordinate system 108 109 REAL(wp), PARAMETER :: & 110 & ppsur = -4762.96143546300_wp , & !: ORCA r4, r2 and r05 coefficients 114 111 & ppa0 = 255.58049070440_wp , & !: (default coefficients) 115 112 & ppa1 = 245.58132232490_wp , & !: 116 & ppkth = 21.43336197938_wp, & !: (non dimensional): gives the approximate113 & ppkth = 21.43336197938_wp , & !: (non dimensional): gives the approximate 117 114 ! !: layer number above which stretching will 118 115 ! !: be maximum. Usually of order jpk/2. 119 & ppacr = 3.00000000000_wp!: (non dimensional): stretching factor120 ! !: for the grid. The highe st zacr, the smallest116 & ppacr = 3.00000000000_wp !: (non dimensional): stretching factor 117 ! !: for the grid. The higher zacr, the smaller 121 118 ! !: the stretching. 122 119 123 !! 124 !! If both ppa0 ppa1 and ppsur are specified to 0, then 125 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 126 !! 127 REAL(wp), PARAMETER :: & 120 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 121 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 122 123 REAL(wp), PARAMETER :: & 128 124 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 129 125 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 130 LOGICAL, PARAMETER :: &126 LOGICAL, PARAMETER :: & 131 127 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 132 REAL(wp), PARAMETER :: &128 REAL(wp), PARAMETER :: & 133 129 & ppa2 = pp_not_used , & !: Double tanh function parameters 134 130 & ppkth2 = pp_not_used , & !: -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_ORCA_R1.h90
r2715 r4229 12 12 !! Use: key_orca_r1=75 to set 75 levels 13 13 !!---------------------------------------------------------------------- 14 CHARACTER (len=16) &14 CHARACTER (len=16) & 15 15 #if !defined key_agrif 16 , PARAMETER &16 , PARAMETER & 17 17 #endif 18 :: &19 cp_cfg = "orca" !: name of the configuration20 INTEGER &18 :: & 19 cp_cfg = "orca" !: Name of the configuration 20 INTEGER & 21 21 #if !defined key_agrif 22 , PARAMETER &22 , PARAMETER & 23 23 #endif 24 :: & 25 jp_cfg = 1 , & !: resolution of the configuration (degrees) 26 ! Original data size 27 jpidta = 362, & !: first horizontal dimension > or = to jpi 28 jpjdta = 292, & !: second > or = to jpj 24 :: & 25 jp_cfg = 1 , & !: Resolution of the configuration (degrees) 26 27 ! Data domain size !!! * Size of all input files * 28 jpidta = 362 , & !: 1st lateral dimension ( >= jpiglo ) 29 jpjdta = 292 , & !: 2nd lateral dimension ( >= jpjglo ) 29 30 #if key_orca_r1==75 30 jpkdta = 75 , & !: number of levels > or = to jpk31 jpkdta = 75 , & !: Number of levels ( >= jpk ) 31 32 #else 32 jpkdta = 46 , & !: number of levels > or = to jpk33 jpkdta = 46 , & !: Number of levels ( >= jpk ) 33 34 #endif 34 ! total domain matrix size 35 jpiglo = jpidta, & !: first dimension of global domain --> i 36 jpjglo = jpjdta, & !: second dimension of global domain --> j 37 ! starting position of the zoom 38 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom 39 jpjzoom = 1 , & !: in data indices 35 36 #if defined key_c1d 37 ! Zoom domain size !!! * C1D zoom * 38 jpiglo = 3 , & !: 1st dimension of global domain --> i 39 jpjglo = 3 , & !: 2nd dimension of global domain --> j 40 40 ! Domain characteristics 41 jperio = 6 !: lateral cond. type (between 0 and 6) 41 jperio = 0 !: Lateral cond. type (between 0 and 6) 42 43 INTEGER & 44 :: & 45 ! Starting position of the zoom 46 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 47 jpjzoom = 1 !: in data domain indices 48 #else 49 ! Global domain size !!! * Global domain * 50 jpiglo = jpidta, & !: 1st dimension of global domain --> i 51 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 52 ! Starting position of the zoom 53 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 54 jpjzoom = 1 , & !: in data domain indices 55 ! Domain characteristics 56 jperio = 6 !: Lateral cond. type (between 0 and 6) 57 #endif 58 42 59 43 60 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 44 61 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 45 REAL,PARAMETER :: pp_not_used = 999999_wp , & 46 & pp_to_be_computed = 0._wp 47 !! 48 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 49 !! 50 INTEGER, PARAMETER :: & ! 51 jphgr_msh = 0 !: type of horizontal mesh 52 ! ! = 0 curvilinear coordinate on the sphere 53 ! ! read in coordinate.nc file 54 ! ! = 1 geographical mesh on the sphere 55 ! ! with regular grid-spacing 56 ! ! = 2 f-plane with regular grid-spacing 57 ! ! = 3 beta-plane with regular grid-spacing 58 ! ! = 4 Mercator grid with T/U point at the equator with 59 ! ! isotropic resolution (e1_deg) 62 63 REAL(wp), PARAMETER :: & 64 pp_not_used = 999999._wp , & !: 65 pp_to_be_computed = 0._wp !: 66 67 68 !! Coefficients associated with the horizontal coordinate system 69 70 INTEGER, PARAMETER :: & 71 jphgr_msh = 0 !: type of horizontal mesh 72 ! !: = 0 curvilinear coordinate on the sphere 73 ! !: read in coordinate.nc file 74 ! !: = 1 geographical mesh on the sphere 75 ! !: with regular grid-spacing 76 ! !: = 2 f-plane with regular grid-spacing 77 ! !: = 3 beta-plane with regular grid-spacing 78 ! !: = 4 Mercator grid with T/U point at the equator with 79 ! !: isotropic resolution (e1_deg) 60 80 61 81 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 62 82 ! The mercator grid starts only approximately at gphi0 because 63 83 ! of the constraint that the equator be a T point. 64 REAL(wp), PARAMETER :: & ! 65 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 66 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 67 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 68 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 69 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 84 85 REAL(wp), PARAMETER :: & 86 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 87 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 88 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 89 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 90 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 70 91 ! 71 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 72 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 92 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 93 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 94 73 95 74 96 !! Coefficients associated with the vertical coordinate system 75 97 76 98 #if key_orca_r1==75 77 REAL(wp), PARAMETER :: &78 & ppsur = -3958.951371276829_wp, & !: ORCA r1 coefficients99 REAL(wp), PARAMETER :: & 100 & ppsur = -3958.951371276829_wp , & !: ORCA r1 coefficients 79 101 & ppa0 = 103.9530096000000_wp , & !: (75 levels case) 80 102 & ppa1 = 2.415951269000000_wp , & !: … … 82 104 ! !: layer number above which stretching will 83 105 ! !: be maximum. Usually of order jpk/2. 84 & ppacr = 7.00000000000_wp!: (non dimensional): stretching factor106 & ppacr = 7.00000000000_wp !: (non dimensional): stretching factor 85 107 ! !: for the grid. The higher zacr, the smaller 86 108 ! !: the stretching. 87 !! 88 !! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then89 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr90 !! 109 110 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 111 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 112 91 113 REAL(wp), PARAMETER :: & 92 114 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 93 115 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 94 !!95 116 LOGICAL, PARAMETER :: & 96 117 & ldbletanh = .TRUE. !: Use/do not use double tanf function for vertical coordinates 97 118 REAL(wp), PARAMETER :: & 98 & ppa2 = 100.7609285000000_wp , & !: Double tanh function parameters 99 & ppkth2= 48.02989372000000_wp , & !: 100 & ppacr2= 13.00000000000_wp !: 101 ! 119 & ppa2 = 100.7609285000000_wp , & !: Double tanh function parameters 120 & ppkth2 = 48.02989372000000_wp , & !: 121 & ppacr2 = 13.00000000000_wp !: 102 122 #else 103 REAL(wp), PARAMETER :: & 104 & ppsur = pp_to_be_computed , & !: Computed in domzgr, set ppdzmin and pphmax below 105 & ppa0 = pp_to_be_computed , & !: " " 106 & ppa1 = pp_to_be_computed , & !: " " 107 ! 108 & ppkth = 23.563_wp , & !: (non dimensional): gives the approximate 123 REAL(wp), PARAMETER :: & 124 & ppsur = pp_to_be_computed , & !: Computed in domzgr, set ppdzmin and pphmax below 125 & ppa0 = pp_to_be_computed , & !: " " 126 & ppa1 = pp_to_be_computed , & !: " " 127 & ppkth = 23.563_wp , & !: (non dimensional): gives the approximate 109 128 ! !: layer number above which stretching will 110 129 ! !: be maximum. Usually of order jpk/2. 111 130 & ppacr = 9.00000000000_wp !: (non dimensional): stretching factor 112 ! !: for the grid. The highe st zacr, the smallest131 ! !: for the grid. The higher zacr, the smaller 113 132 ! !: the stretching. 114 !! 115 !! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then116 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr117 !! 133 134 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 135 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 136 118 137 REAL(wp), PARAMETER :: & 119 & ppdzmin = 6._wp ,& !: (meters) vertical thickness of the top layer138 & ppdzmin = 6._wp , & !: (meters) vertical thickness of the top layer 120 139 & pphmax = 5750._wp !: (meters) Maximum depth of the ocean gdepw(jpk) 121 !!122 140 LOGICAL, PARAMETER :: & 123 141 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_ORCA_R2.h90
r2715 r4229 9 9 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 10 10 !!---------------------------------------------------------------------- 11 CHARACTER (len=16) &11 CHARACTER (len=16) & 12 12 #if !defined key_agrif 13 , PARAMETER &13 , PARAMETER & 14 14 #endif 15 :: &16 cp_cfg = "orca" !: name of the configuration17 INTEGER &15 :: & 16 cp_cfg = "orca" !: Name of the configuration 17 INTEGER & 18 18 #if !defined key_agrif 19 , PARAMETER &19 , PARAMETER & 20 20 #endif 21 :: &22 jp_cfg = 2, & !: resolution of the configuration (degrees)21 :: & 22 jp_cfg = 2 , & !: Resolution of the configuration (degrees) 23 23 24 ! data size !!! * size of all input files*25 jpidta = 182,& !: 1st lateral dimension ( >= jpiglo )26 jpjdta = 149, & !: 2nd " "( >= jpjglo )27 jpkdta = 31 !: number of levels ( >= jpk )24 ! Data domain size !!! * Size of all input files * 25 jpidta = 182 , & !: 1st lateral dimension ( >= jpiglo ) 26 jpjdta = 149 , & !: 2nd lateral dimension ( >= jpjglo ) 27 jpkdta = 31 , & !: Number of levels ( >= jpk ) 28 28 29 #if defined key_antarctic 30 ! zoom domain size !!! * antarctic zoom * 31 INTEGER & 32 #if !defined key_agrif 33 , PARAMETER & 29 #if defined key_c1d 30 ! Zoom domain size !!! * C1D zoom * 31 jpiglo = 3 , & !: 1st dimension of global domain --> i 32 jpjglo = 3 , & !: 2nd dimension of global domain --> j 33 ! Domain characteristics 34 jperio = 0 !: Lateral cond. type (between 0 and 6) 35 36 INTEGER & 37 :: & 38 ! Starting position of the zoom 39 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 40 jpjzoom = 1 !: in data domain indices 41 #elif defined key_antarctic 42 ! Zoom domain size !!! * Antarctic zoom * 43 jpiglo = jpidta, & !: 1st dimension of global domain --> i 44 jpjglo = 50 , & !: 2nd dimension of global domain --> j 45 ! Starting position of the zoom 46 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 47 jpjzoom = 1 , & !: in data domain indices 48 ! Domain characteristics 49 jperio = 1 !: Lateral cond. type (between 0 and 6) 50 #elif defined key_arctic 51 ! Zoom domain size !!! * Arctic zoom * 52 jpiglo = 142 , & !: 1st dimension of global domain --> i 53 jpjglo = jpjdta-97+1, & !: 2nd dimension of global domain --> j 54 ! Starting position of the zoom 55 jpizoom = 21 , & !: Left bottom (i,j) indices of the zoom 56 jpjzoom = 97 , & !: in data domain indices 57 ! Domain characteristics 58 jperio = 3 !: Lateral cond. type (between 0 and 6) 59 #else 60 ! Global domain size !!! * Global domain * 61 jpiglo = jpidta, & !: 1st dimension of global domain --> i 62 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 63 ! Starting position of the zoom 64 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 65 jpjzoom = 1 , & !: in data domain indices 66 ! Domain characteristics 67 jperio = 4 !: Lateral cond. type (between 0 and 6) 34 68 #endif 35 :: &36 jpiglo = jpidta, & !: 1st dimension of global domain --> i37 jpjglo = 50, & !: 2nd " " --> j38 ! zoom starting position39 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom40 jpjzoom = 1 , & !: in data domain indices41 ! Domain characteristics42 jperio = 1 !: lateral cond. type (between 0 and 6)43 69 44 #elif defined key_arctic45 ! zoom domain size !!! * arctic zoom *46 INTEGER &47 #if !defined key_agrif48 , PARAMETER &49 #endif50 :: &51 jpiglo = 142 , & !: 1st dimension of global domain --> i52 jpjglo = jpjdta-97+1, & !: 2nd " " --> j53 ! zoom starting position54 jpizoom = 21 , & !: left bottom (i,j) indices of the zoom55 jpjzoom = 97 , & !: in data domain indices56 ! Domain characteristics57 jperio = 3 !: lateral cond. type (between 0 and 6)58 59 #elif defined key_c1d60 ! global domain size !!! * global domain *61 INTEGER &62 #if !defined key_agrif63 , PARAMETER &64 #endif65 :: &66 jpiglo = 3 , & !: 1st dimension of global domain --> i67 jpjglo = 3 , & !: 2nd " " --> j68 ! starting position of the zoom69 ! jpizoom = 61 , & !: left bottom (i,j) indices of the zoom70 ! jpjzoom = 133 , & !: in data domain indices (160W,75N)71 ! jpizoom = 61 , & !: left bottom (i,j) indices of the zoom72 ! jpjzoom = 110 , & !: in data domain indices (160W,50N)73 ! jpizoom = 61 , & !: left bottom (i,j) indices of the zoom74 ! jpjzoom = 97 , & !: in data domain indices (160W,30N)75 ! jpizoom = 61 , & !: left bottom (i,j) indices of the zoom76 ! jpjzoom = 86 , & !: in data domain indices (160W,10N)77 ! jpizoom = 61 , & !: left bottom (i,j) indices of the zoom78 ! jpjzoom = 49 , & !: in data domain indices (160W,30S)79 ! jpizoom = 61 , & !: left bottom (i,j) indices of the zoom80 ! jpjzoom = 27 , & !: in data domain indices (160W,60S)81 ! jpizoom = 61 , & !: left bottom (i,j) indices of the zoom82 ! jpjzoom = 7 , & !: in data domain indices (160W,75S)83 jpizoom = 110 , & !: left bottom (i,j) indices of the zoom84 jpjzoom = 97 , & !: in data domain indices (64W,31.5N) BATS site85 ! Domain characteristics86 jperio = 0 !: lateral cond. type (between 0 and 6)87 #else88 ! global domain size !!! * global domain *89 INTEGER &90 #if !defined key_agrif91 , PARAMETER &92 #endif93 :: &94 jpiglo = jpidta, & !: 1st dimension of global domain --> i95 jpjglo = jpjdta, & !: 2nd " " --> j96 ! starting position of the zoom97 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom98 jpjzoom = 1 , & !: in data domain indices99 ! Domain characteristics100 jperio = 4 !: lateral cond. type (between 0 and 6)101 102 #endif103 70 104 71 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 105 72 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 106 REAL(wp), PARAMETER :: &107 pp_not_used = 999999_wp , & !:108 pp_to_be_computed = 0._wp !:109 73 110 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 74 REAL(wp), PARAMETER :: & 75 pp_not_used = 999999._wp , & !: 76 pp_to_be_computed = 0._wp !: 111 77 112 INTEGER,PARAMETER :: & ! 113 jphgr_msh = 0 !: type of horizontal mesh 114 ! ! = 0 curvilinear coordinate on the sphere 115 ! ! read in coordinate.nc file 116 ! ! = 1 geographical mesh on the sphere 117 ! ! with regular grid-spacing 118 ! ! = 2 f-plane with regular grid-spacing 119 ! ! = 3 beta-plane with regular grid-spacing 120 ! ! = 4 Mercator grid with T/U point at the equator with 121 ! ! isotropic resolution (e1_deg) 78 79 !! Coefficients associated with the horizontal coordinate system 80 81 INTEGER, PARAMETER :: & 82 jphgr_msh = 0 !: type of horizontal mesh 83 ! !: = 0 curvilinear coordinate on the sphere 84 ! !: read in coordinate.nc file 85 ! !: = 1 geographical mesh on the sphere 86 ! !: with regular grid-spacing 87 ! !: = 2 f-plane with regular grid-spacing 88 ! !: = 3 beta-plane with regular grid-spacing 89 ! !: = 4 Mercator grid with T/U point at the equator with 90 ! !: isotropic resolution (e1_deg) 122 91 123 92 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 124 93 ! The mercator grid starts only approximately at gphi0 because 125 94 ! of the constraint that the equator be a T point. 126 REAL(wp) ,PARAMETER :: & ! 127 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 128 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 129 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 130 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 131 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 95 96 REAL(wp), PARAMETER :: & 97 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 98 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 99 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 100 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 101 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 132 102 ! 133 ppe1_m = pp_not_used, 134 ppe2_m = pp_not_used 103 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 104 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 135 105 136 !! 137 !! Vertical grid parameter for domzgr 138 !! ================================== 139 !! 140 REAL(wp), PARAMETER :: & 141 & ppsur = -4762.96143546300_wp , & !: ORCA r4, r2 and r05 coefficients 106 107 !! Coefficients associated with the vertical coordinate system 108 109 REAL(wp), PARAMETER :: & 110 & ppsur = -4762.96143546300_wp , & !: ORCA r4, r2 and r05 coefficients 142 111 & ppa0 = 255.58049070440_wp , & !: (default coefficients) 143 112 & ppa1 = 245.58132232490_wp , & !: 144 & ppkth = 21.43336197938_wp, & !: (non dimensional): gives the approximate113 & ppkth = 21.43336197938_wp , & !: (non dimensional): gives the approximate 145 114 ! !: layer number above which stretching will 146 115 ! !: be maximum. Usually of order jpk/2. 147 & ppacr = 3.00000000000_wp!: (non dimensional): stretching factor148 ! !: for the grid. The highe st zacr, the smallest116 & ppacr = 3.00000000000_wp !: (non dimensional): stretching factor 117 ! !: for the grid. The higher zacr, the smaller 149 118 ! !: the stretching. 150 119 151 !! 152 !! If both ppa0 ppa1 and ppsur are specified to 0, then 153 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 154 !! 155 REAL(wp), PARAMETER :: & 120 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 121 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 122 123 REAL(wp), PARAMETER :: & 156 124 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 157 125 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 158 LOGICAL, PARAMETER :: &126 LOGICAL, PARAMETER :: & 159 127 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 160 REAL(wp), PARAMETER :: &128 REAL(wp), PARAMETER :: & 161 129 & ppa2 = pp_not_used , & !: Double tanh function parameters 162 130 & ppkth2 = pp_not_used , & !: -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_ORCA_R4.h90
r2715 r4229 1 1 !!--------------------------------------------------------------------- 2 !! *** par_ORCA_R4.h90 *** 2 !! *** par_ORCA_R4.h90 *** 3 3 !! Ocean Domain : 4 degrees resolution global ocean 4 4 !! (0RCA_R4 configuration) … … 9 9 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 10 10 !!---------------------------------------------------------------------- 11 CHARACTER (len=16) &11 CHARACTER (len=16) & 12 12 #if !defined key_agrif 13 , PARAMETER &13 , PARAMETER & 14 14 #endif 15 ::&16 cp_cfg = "orca" !: name of the configuration17 INTEGER &15 :: & 16 cp_cfg = "orca" !: Name of the configuration 17 INTEGER & 18 18 #if !defined key_agrif 19 , PARAMETER &19 , PARAMETER & 20 20 #endif 21 :: &22 jp_cfg = 4 , & !: resolution of the configuration (degrees)23 ! Original data size 24 jpidta = 92 , & !: first horizontal dimension > or = to jpi25 jp jdta = 76 , & !: second > or = to jpj26 jp kdta = 31 , & !: number of levels > or = to jpk27 ! global domain matrix size28 jpiglo = jpidta, & !: first dimension of global domain --> i 29 jpjglo = jpjdta, & !: second dimension of global domain --> j 30 ! starting position of the zoom31 jpi zoom = 1 , & !: left bottom (i,j) indices of the zoom32 jpj zoom = 1 , & !: in data indices21 :: & 22 jp_cfg = 4 , & !: Resolution of the configuration (degrees) 23 24 ! Data domain size !!! * Size of all input files * 25 jpidta = 92 , & !: 1st lateral dimension ( >= jpiglo ) 26 jpjdta = 76 , & !: 2nd lateral dimension ( >= jpjglo ) 27 jpkdta = 31 , & !: Number of levels ( >= jpk ) 28 29 #if defined key_c1d 30 ! Zoom domain size !!! * C1D zoom * 31 jpiglo = 3 , & !: 1st dimension of global domain --> i 32 jpjglo = 3 , & !: 2nd dimension of global domain --> j 33 33 ! Domain characteristics 34 jperio = 4 !: lateral cond. type (between 0 and 6) 34 jperio = 0 !: Lateral cond. type (between 0 and 6) 35 36 INTEGER & 37 :: & 38 ! Starting position of the zoom 39 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 40 jpjzoom = 1 !: in data domain indices 41 #else 42 ! Global domain size !!! * Global domain * 43 jpiglo = jpidta, & !: 1st dimension of global domain --> i 44 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 45 ! Starting position of the zoom 46 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 47 jpjzoom = 1 , & !: in data domain indices 48 ! Domain characteristics 49 jperio = 4 !: Lateral cond. type (between 0 and 6) 50 #endif 51 35 52 36 53 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 37 54 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 38 REAL(wp), PARAMETER :: &39 pp_not_used = 999999_wp , & !:40 pp_to_be_computed = 0._wp !:41 55 42 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 43 INTEGER, PARAMETER :: & ! 44 jphgr_msh = 0 !: type of horizontal mesh 45 ! ! = 0 curvilinear coordinate on the sphere 46 ! ! read in coordinate.nc file 47 ! ! = 1 geographical mesh on the sphere 48 ! ! with regular grid-spacing 49 ! ! = 2 f-plane with regular grid-spacing 50 ! ! = 3 beta-plane with regular grid-spacing 51 ! ! = 4 Mercator grid with T/U point at the equator with 52 ! ! isotropic resolution (e1_deg) 56 REAL(wp), PARAMETER :: & 57 pp_not_used = 999999._wp , & !: 58 pp_to_be_computed = 0._wp !: 59 60 61 !! Coefficients associated with the horizontal coordinate system 62 63 INTEGER, PARAMETER :: & 64 jphgr_msh = 0 !: type of horizontal mesh 65 ! !: = 0 curvilinear coordinate on the sphere 66 ! !: read in coordinate.nc file 67 ! !: = 1 geographical mesh on the sphere 68 ! !: with regular grid-spacing 69 ! !: = 2 f-plane with regular grid-spacing 70 ! !: = 3 beta-plane with regular grid-spacing 71 ! !: = 4 Mercator grid with T/U point at the equator with 72 ! !: isotropic resolution (e1_deg) 53 73 54 74 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 55 75 ! The mercator grid starts only approximately at gphi0 because 56 76 ! of the constraint that the equator be a T point. 57 REAL(wp) , PARAMETER :: & ! 58 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 59 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 60 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 61 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 62 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 77 78 REAL(wp), PARAMETER :: & 79 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 80 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 81 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 82 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 83 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 63 84 ! 64 ppe1_m = pp_not_used, 65 ppe2_m = pp_not_used 85 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 86 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 66 87 67 88 68 !! Vertical grid parameter for domzgr 69 !! ================================== 89 !! Coefficients associated with the vertical coordinate system 70 90 71 REAL(wp), PARAMETER :: &72 & ppsur = -4762.96143546300_wp, & !: ORCA r4, r2 and r05 coefficients91 REAL(wp), PARAMETER :: & 92 & ppsur = -4762.96143546300_wp , & !: ORCA r4, r2 and r05 coefficients 73 93 & ppa0 = 255.58049070440_wp , & !: (default coefficients) 74 94 & ppa1 = 245.58132232490_wp , & !: 75 & ppkth = 21.43336197938_wp, & !: (non dimensional): gives the approximate95 & ppkth = 21.43336197938_wp , & !: (non dimensional): gives the approximate 76 96 ! !: layer number above which stretching will 77 97 ! !: be maximum. Usually of order jpk/2. 78 & ppacr = 3.00000000000_wp!: (non dimensional): stretching factor79 ! !: for the grid. The highe st zacr, the smallest98 & ppacr = 3.00000000000_wp !: (non dimensional): stretching factor 99 ! !: for the grid. The higher zacr, the smaller 80 100 ! !: the stretching. 81 101 82 !! If both ppa0 ppa1 and ppsur are specified to 0, then83 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr102 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 103 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 84 104 85 REAL(wp), PARAMETER :: &105 REAL(wp), PARAMETER :: & 86 106 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 87 107 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 88 LOGICAL, PARAMETER :: &108 LOGICAL, PARAMETER :: & 89 109 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 90 REAL(wp), PARAMETER :: &110 REAL(wp), PARAMETER :: & 91 111 & ppa2 = pp_not_used , & !: Double tanh function parameters 92 112 & ppkth2 = pp_not_used , & !: -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_POMME_R025.h90
r3294 r4229 9 9 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 10 10 !!---------------------------------------------------------------------- 11 CHARACTER (len=16) &11 CHARACTER (len=16) & 12 12 #if !defined key_agrif 13 , PARAMETER &13 , PARAMETER & 14 14 #endif 15 :: &16 cp_cfg = "pomme" !: POMME025 name of the configuration17 INTEGER &15 :: & 16 cp_cfg = "pomme" !: Name of the configuration 17 INTEGER & 18 18 #if !defined key_agrif 19 , PARAMETER &19 , PARAMETER & 20 20 #endif 21 :: &22 jp_cfg = 025 , & !: resolution of the configuration (degrees)23 ! Original data size 21 :: & 22 jp_cfg = 025 , & !: Resolution of the configuration (degrees) 23 24 24 ! ORCA025 global grid size 25 jpiglo_ORCA025 = 1442, &26 jpjglo_ORCA025 = 1021, & ! not used currently25 jpiglo_ORCA025 = 1442, & 26 jpjglo_ORCA025 = 1021, & ! not used currently 27 27 ! POMME "global" domain localisation in the ORCA025 global grid 28 jpi_iw = 1059, & 29 jpi_ie = 1088, & 30 jpj_js = 661, & 31 jpj_jn = 700, & 32 jpidta = ( jpi_ie - jpi_iw + 1 ), & !: =30 first horizontal dimension > or = to jpi 33 jpjdta = ( jpj_jn - jpj_js + 1 ), & !: =40 second > or = to jpj 34 jpkdta = 46 , & !: number of levels > or = to jpk 35 ! total domain matrix size 36 jpiglo = jpidta, & !: first dimension of global domain --> i 37 jpjglo = jpjdta, & !: second dimension of global domain --> j 38 ! starting position of the zoom 39 jpizoom = 1 , & !: left bottom (i,j) indices of the zoom 40 jpjzoom = 1 , & !: in data indices 28 jpi_iw = 1059 , & 29 jpi_ie = 1088 , & 30 jpj_js = 661 , & 31 jpj_jn = 700 , & 32 33 ! Data domain size !!! * Size of all input files * 34 jpidta = ( jpi_ie - jpi_iw + 1 ), & !: =30 1st lateral dimension ( >= jpiglo ) 35 jpjdta = ( jpj_jn - jpj_js + 1 ), & !: =40 2nd lateral dimension ( >= jpjglo ) 36 jpkdta = 46 , & !: Number of levels ( >= jpk ) 37 38 ! Global domain size !!! * Global domain * 39 jpiglo = jpidta, & !: 1st dimension of global domain --> i 40 jpjglo = jpjdta, & !: 2nd dimension of global domain --> j 41 ! Starting position of the zoom 42 jpizoom = 1 , & !: Left bottom (i,j) indices of the zoom 43 jpjzoom = 1 , & !: in data domain indices 41 44 ! Domain characteristics 42 jperio = 0 !: lateral cond. type (between 0 and 6) 45 jperio = 0 !: Lateral cond. type (between 0 and 6) 46 43 47 44 48 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. 45 49 !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr 46 REAL,PARAMETER :: pp_not_used = 999999_wp , & 47 & pp_to_be_computed = 0._wp 48 !! 49 !! Coefficients associated with the horizontal coordinate system (jphgr_msh /= 0 ) 50 !! 51 INTEGER, PARAMETER :: & ! 52 jphgr_msh = 0 !: type of horizontal mesh 53 ! ! = 0 curvilinear coordinate on the sphere 54 ! ! read in coordinate.nc file 55 ! ! = 1 geographical mesh on the sphere 56 ! ! with regular grid-spacing 57 ! ! = 2 f-plane with regular grid-spacing 58 ! ! = 3 beta-plane with regular grid-spacing 59 ! ! = 4 Mercator grid with T/U point at the equator with 60 ! ! isotropic resolution (e1_deg) 50 51 REAL(wp), PARAMETER :: & 52 pp_not_used = 999999._wp , & !: 53 pp_to_be_computed = 0._wp !: 54 55 56 !! Coefficients associated with the horizontal coordinate system 57 58 INTEGER, PARAMETER :: & 59 jphgr_msh = 0 !: type of horizontal mesh 60 ! !: = 0 curvilinear coordinate on the sphere 61 ! !: read in coordinate.nc file 62 ! !: = 1 geographical mesh on the sphere 63 ! !: with regular grid-spacing 64 ! !: = 2 f-plane with regular grid-spacing 65 ! !: = 3 beta-plane with regular grid-spacing 66 ! !: = 4 Mercator grid with T/U point at the equator with 67 ! !: isotropic resolution (e1_deg) 61 68 62 69 ! ppglam0 , ppgphi0: coordinates of the lower leftmost T point of the grid. 63 70 ! The mercator grid starts only approximately at gphi0 because 64 71 ! of the constraint that the equator be a T point. 65 REAL(wp), PARAMETER :: & ! 66 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 67 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 68 ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 69 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 70 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 72 73 REAL(wp), PARAMETER :: & 74 ppglam0 = pp_not_used, & !: longitude of first raw and column T-point (jphgr_msh = 1) 75 ppgphi0 = pp_not_used, & !: latitude of first raw and column T-point (jphgr_msh = 1) 76 ! !: latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) 77 ppe1_deg = pp_not_used, & !: zonal grid-spacing (degrees) 78 ppe2_deg = pp_not_used, & !: meridional grid-spacing (degrees) 71 79 ! 72 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 73 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 80 ppe1_m = pp_not_used, & !: zonal grid-spacing (meters ) 81 ppe2_m = pp_not_used !: meridional grid-spacing (meters ) 82 74 83 75 84 !! Coefficients associated with the vertical coordinate system 76 85 77 REAL(wp), PARAMETER :: & 78 & ppsur = pp_to_be_computed , & !: Computed in domzgr, set ppdzmin and pphmax below 79 & ppa0 = pp_to_be_computed , & !: " " 80 & ppa1 = pp_to_be_computed , & !: " " 81 ! 82 & ppkth = 23.563_wp , & !: (non dimensional): gives the approximate 83 ! !: layer number above which stretching will 84 ! !: be maximum. Usually of order jpk/2. 85 & ppacr = 9.00000000000_wp !: (non dimensional): stretching factor 86 ! !: for the grid. The highest zacr, the smallest 87 ! !: the stretching. 86 REAL(wp), PARAMETER :: & 87 & ppsur = pp_to_be_computed , & !: Computed in domzgr, set ppdzmin and pphmax below 88 & ppa0 = pp_to_be_computed , & !: " " 89 & ppa1 = pp_to_be_computed , & !: " " 90 & ppkth = 23.563_wp , & !: (non dimensional): gives the approximate 91 ! !: layer number above which stretching will 92 ! !: be maximum. Usually of order jpk/2. 93 & ppacr = 9.00000000000_wp !: (non dimensional): stretching factor 94 ! !: for the grid. The higher zacr, the smaller 95 ! !: the stretching. 88 96 89 !! 90 !! If both ppa0 ppa1 and ppsur are specified to 0, then 91 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 92 !! 93 REAL(wp), PARAMETER :: & 94 & ppdzmin = 6._wp , & !: (meters) vertical thickness of the top layer 95 & pphmax = 5750._wp !: (meters) Maximum depth of the ocean gdepw(jpk) 96 LOGICAL, PARAMETER :: & 97 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 98 REAL(wp), PARAMETER :: & 99 & ppa2 = pp_not_used , & !: Double tanh function parameters 100 & ppkth2 = pp_not_used , & !: 101 & ppacr2 = pp_not_used !: 97 ! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 98 ! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 99 100 REAL(wp), PARAMETER :: & 101 & ppdzmin = 6._wp , & !: (meters) vertical thickness of the top layer 102 & pphmax = 5750._wp !: (meters) Maximum depth of the ocean gdepw(jpk) 103 LOGICAL, PARAMETER :: & 104 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 105 REAL(wp), PARAMETER :: & 106 & ppa2 = pp_not_used , & !: Double tanh function parameters 107 & ppkth2 = pp_not_used , & !: 108 & ppacr2 = pp_not_used !: 102 109 !!--------------------------------------------------------------------- -
branches/2013/dev_MERCATOR_UKMO_2013/NEMOGCM/NEMO/OPA_SRC/par_oce.F90
r4228 r4229 104 104 105 105 ! global or zoom domain size !!! * computational domain * 106 #if defined key_c1d 107 INTEGER, PUBLIC, PARAMETER :: jpiglo = 3 !: 1st dimension of global domain --> i 108 INTEGER, PUBLIC, PARAMETER :: jpjglo = 3 !: 2nd - - --> j 109 110 ! zoom starting position 111 INTEGER, PUBLIC :: jpizoom = 1 !: left bottom (i,j) indices of the zoom 112 INTEGER, PUBLIC :: jpjzoom = 1 !: in data domain indices 113 #else 106 114 INTEGER, PUBLIC, PARAMETER :: jpiglo = jpidta !: 1st dimension of global domain --> i 107 115 INTEGER, PUBLIC, PARAMETER :: jpjglo = jpjdta !: 2nd - - --> j … … 110 118 INTEGER, PUBLIC, PARAMETER :: jpizoom = 1 !: left bottom (i,j) indices of the zoom 111 119 INTEGER, PUBLIC, PARAMETER :: jpjzoom = 1 !: in data domain indices 120 #endif 112 121 113 122 ! Domain characteristics
Note: See TracChangeset
for help on using the changeset viewer.