2769
2770
2772
2773
2774
2775 logical, intent(in) :: ldef
2776 integer, intent(in) :: ng, model
2777
2778
2779
2780 logical :: got_var(NV)
2781
2782 integer, parameter :: Natt = 25
2783
2784 integer :: i, j, ifield, itrc, nvd3, nvd4
2785 integer :: recdim, status
2786# ifdef ADJUST_BOUNDARY
2787 integer :: IorJdim, brecdim
2788# endif
2789 integer :: DimIDs(nDimID)
2790 integer :: t2dgrd(3), u2dgrd(3), v2dgrd(3)
2791# ifdef ADJUST_BOUNDARY
2792 integer :: t2dobc(4)
2793# endif
2794
2795# ifdef SOLVE3D
2796# ifdef SEDIMENT
2797 integer :: b3dgrd(4)
2798# endif
2799 integer :: t3dgrd(4), u3dgrd(4), v3dgrd(4), w3dgrd(4)
2800# ifdef ADJUST_BOUNDARY
2801 integer :: t3dobc(5)
2802# endif
2803# endif
2804# ifdef WET_DRY
2805 integer :: sp2dgrd(3)
2806# endif
2807
2808 real(r8) :: Aval(6)
2809
2810 character (len=256) :: ncname
2811 character (len=MaxLen) :: Vinfo(Natt)
2812
2813 character (len=*), parameter :: MyFile = &
2814 & __FILE__//", def_his_pio"
2815
2816 TYPE (Var_desc_t) :: varDesc
2817
2818 sourcefile=myfile
2819
2820
2821
2822
2823
2824 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2825 ncname=his(ng)%name
2826
2827 IF (master) THEN
2828 IF (ldef) THEN
2829 WRITE (stdout,10) ng, trim(ncname)
2830 ELSE
2831 WRITE (stdout,20) ng, trim(ncname)
2832 END IF
2833 END IF
2834
2835
2836
2837
2838
2839 define : IF (ldef) THEN
2841 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
2842 IF (master) WRITE (stdout,30) trim(ncname)
2843 RETURN
2844 END IF
2845
2846
2847
2848
2849
2850 dimids=0
2851
2852 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xi_rho', &
2853 & iobounds(ng)%xi_rho, dimids( 1))
2854 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2855
2856 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xi_u', &
2857 & iobounds(ng)%xi_u, dimids( 2))
2858 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2859
2860 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xi_v', &
2861 & iobounds(ng)%xi_v, dimids( 3))
2862 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2863
2864 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xi_psi', &
2865 & iobounds(ng)%xi_psi, dimids( 4))
2866 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2867
2868 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'eta_rho', &
2869 & iobounds(ng)%eta_rho, dimids( 5))
2870 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2871
2872 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'eta_u', &
2873 & iobounds(ng)%eta_u, dimids( 6))
2874 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2875
2876 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'eta_v', &
2877 & iobounds(ng)%eta_v, dimids( 7))
2878 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2879
2880 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'eta_psi', &
2881 & iobounds(ng)%eta_psi, dimids( 8))
2882 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2883
2884# ifdef ADJUST_BOUNDARY
2885 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'IorJ', &
2886 & iobounds(ng)%IorJ, iorjdim)
2887 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2888# endif
2889
2890# if defined WRITE_WATER && defined MASKING
2891 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xy_rho', &
2892 & iobounds(ng)%xy_rho, dimids(17))
2893 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2894
2895 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xy_u', &
2896 & iobounds(ng)%xy_u, dimids(18))
2897 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2898
2899 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xy_v', &
2900 & iobounds(ng)%xy_v, dimids(19))
2901 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2902# endif
2903
2904# ifdef SOLVE3D
2905# if defined WRITE_WATER && defined MASKING
2906 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xyz_rho', &
2907 & iobounds(ng)%xy_rho*n(ng), dimids(20))
2908 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2909
2910 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xyz_u', &
2911 & iobounds(ng)%xy_u*n(ng), dimids(21))
2912 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2913
2914 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xyz_v', &
2915 & iobounds(ng)%xy_v*n(ng), dimids(22))
2916 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2917
2918 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xyz_w', &
2919 & iobounds(ng)%xy_rho*(n(ng)+1), dimids(23))
2920 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2921# endif
2922
2923 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'N', &
2924 & n(ng), dimids( 9))
2925 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2926
2927 status=def_dim(ng, model, his(ng)%pioFile, ncname, 's_rho', &
2928 & n(ng), dimids( 9))
2929 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2930
2931 status=def_dim(ng, model, his(ng)%pioFile, ncname, 's_w', &
2932 & n(ng)+1, dimids(10))
2933 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2934
2935 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'tracer', &
2936 & nt(ng), dimids(11))
2937 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2938
2939# ifdef SEDIMENT
2940 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'NST', &
2941 & nst, dimids(32))
2942 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2943
2944 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'Nbed', &
2945 & nbed, dimids(16))
2946 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2947
2948# if defined WRITE_WATER && defined MASKING
2949 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'xybed', &
2950 & iobounds(ng)%xy_rho*nbed, dimids(24))
2951 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2952# endif
2953# endif
2954
2955# ifdef ECOSIM
2956 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'Nbands', &
2957 & nbands, dimids(33))
2958 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2959
2960 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'Nphy', &
2961 & nphy, dimids(25))
2962 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2963
2964 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'Nbac', &
2965 & nbac, dimids(26))
2966 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2967
2968 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'Ndom', &
2969 & ndom, dimids(27))
2970 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2971
2972 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'Nfec', &
2973 & nfec, dimids(28))
2974 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2975# endif
2976# endif
2977
2978 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'boundary', &
2979 & 4, dimids(14))
2980 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2981
2982# ifdef FOUR_DVAR
2983 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'Nstate', &
2984 & nstatevar(ng), dimids(29))
2985 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2986# endif
2987
2988# ifdef ADJUST_BOUNDARY
2989 status=def_dim(ng, model, his(ng)%pioFile, ncname, 'obc_adjust',&
2990 & nbrec(ng), dimids(31))
2991 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2992# endif
2993
2994 status=def_dim(ng, model, his(ng)%pioFile, ncname, &
2995 & trim(adjustl(vname(5,idtime))), &
2996 & pio_unlimited, dimids(12))
2997 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
2998
2999 recdim=dimids(12)
3000# ifdef ADJUST_BOUNDARY
3001 brecdim=dimids(31)
3002# endif
3003
3004
3005
3006# if defined WRITE_WATER && defined MASKING
3007 nvd3=2
3008 nvd4=2
3009# else
3010 nvd3=3
3011 nvd4=4
3012# endif
3013
3014
3015
3016# if defined WRITE_WATER && defined MASKING
3017 t2dgrd(1)=dimids(17)
3018 t2dgrd(2)=dimids(12)
3019# ifdef SOLVE3D
3020 t3dgrd(1)=dimids(20)
3021 t3dgrd(2)=dimids(12)
3022# endif
3023# else
3024 t2dgrd(1)=dimids( 1)
3025 t2dgrd(2)=dimids( 5)
3026 t2dgrd(3)=dimids(12)
3027# ifdef SOLVE3D
3028 t3dgrd(1)=dimids( 1)
3029 t3dgrd(2)=dimids( 5)
3030 t3dgrd(3)=dimids( 9)
3031 t3dgrd(4)=dimids(12)
3032# endif
3033# endif
3034# ifdef ADJUST_BOUNDARY
3035 t2dobc(1)=iorjdim
3036 t2dobc(2)=dimids(14)
3037 t2dobc(3)=brecdim
3038 t2dobc(4)=dimids(12)
3039# ifdef SOLVE3D
3040 t3dobc(1)=iorjdim
3041 t3dobc(2)=dimids( 9)
3042 t3dobc(3)=dimids(14)
3043 t3dobc(4)=brecdim
3044 t3dobc(5)=dimids(12)
3045# endif
3046# endif
3047# ifdef WET_DRY
3048
3049
3050
3051 sp2dgrd(1)=dimids( 4)
3052 sp2dgrd(2)=dimids( 8)
3053 sp2dgrd(3)=dimids(12)
3054# endif
3055
3056
3057
3058# if defined WRITE_WATER && defined MASKING
3059 u2dgrd(1)=dimids(18)
3060 u2dgrd(2)=dimids(12)
3061# ifdef SOLVE3D
3062 u3dgrd(1)=dimids(21)
3063 u3dgrd(2)=dimids(12)
3064# endif
3065# else
3066 u2dgrd(1)=dimids( 2)
3067 u2dgrd(2)=dimids( 6)
3068 u2dgrd(3)=dimids(12)
3069# ifdef SOLVE3D
3070 u3dgrd(1)=dimids( 2)
3071 u3dgrd(2)=dimids( 6)
3072 u3dgrd(3)=dimids( 9)
3073 u3dgrd(4)=dimids(12)
3074# endif
3075# endif
3076
3077
3078
3079# if defined WRITE_WATER && defined MASKING
3080 v2dgrd(1)=dimids(19)
3081 v2dgrd(2)=dimids(12)
3082# ifdef SOLVE3D
3083 v3dgrd(1)=dimids(22)
3084 v3dgrd(2)=dimids(12)
3085# endif
3086# else
3087 v2dgrd(1)=dimids( 3)
3088 v2dgrd(2)=dimids( 7)
3089 v2dgrd(3)=dimids(12)
3090# ifdef SOLVE3D
3091 v3dgrd(1)=dimids( 3)
3092 v3dgrd(2)=dimids( 7)
3093 v3dgrd(3)=dimids( 9)
3094 v3dgrd(4)=dimids(12)
3095# endif
3096# endif
3097# ifdef SOLVE3D
3098
3099
3100
3101# if defined WRITE_WATER && defined MASKING
3102 w3dgrd(1)=dimids(23)
3103 w3dgrd(2)=dimids(12)
3104# else
3105 w3dgrd(1)=dimids( 1)
3106 w3dgrd(2)=dimids( 5)
3107 w3dgrd(3)=dimids(10)
3108 w3dgrd(4)=dimids(12)
3109# endif
3110# ifdef SEDIMENT
3111
3112
3113
3114# if defined WRITE_WATER && defined MASKING
3115 b3dgrd(1)=dimids(24)
3116 b3dgrd(2)=dimids(12)
3117# else
3118 b3dgrd(1)=dimids( 1)
3119 b3dgrd(2)=dimids( 5)
3120 b3dgrd(3)=dimids(16)
3121 b3dgrd(4)=dimids(12)
3122# endif
3123# endif
3124# endif
3125
3126
3127
3128 his(ng)%Rindex=0
3129
3130
3131
3132 DO i=1,natt
3133 DO j=1,len(vinfo(1))
3134 vinfo(i)(j:j)=' '
3135 END DO
3136 END DO
3137 DO i=1,6
3138 aval(i)=0.0_r8
3139 END DO
3140
3141
3142
3143
3144
3145 CALL def_info (ng, model, his(ng)%pioFile, ncname, dimids)
3146 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3147
3148
3149
3150
3151
3152
3153
3154 vinfo( 1)=vname(1,idtime)
3155 vinfo( 2)=vname(2,idtime)
3156 WRITE (vinfo( 3),'(a,a)') 'seconds since ', trim(rclock%string)
3157 vinfo( 4)=trim(rclock%calendar)
3158 vinfo(14)=vname(4,idtime)
3159 vinfo(21)=vname(6,idtime)
3160 his(ng)%pioVar(idtime)%dkind=
pio_tout
3161 his(ng)%pioVar(idtime)%gtype=0
3162
3163 status=def_var(ng, model, his(ng)%pioFile, &
3164 & his(ng)%pioVar(idtime)%vd, &
3165 &
pio_tout, 1, (/recdim/), aval, vinfo, ncname, &
3166 & setparaccess = .true.)
3167 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3168
3169# ifdef SO_SEMI
3170
3171
3172
3173 vinfo( 1)='Ritz_rvalue'
3174 vinfo( 2)='real Ritz eigenvalues'
3175 status=def_var(ng, model, his(ng)%pioFile, vardesc,
pio_type, &
3176 & 1, (/recdim/), aval, vinfo, ncname, &
3177 & setparaccess = .true.)
3178 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3179
3180 vinfo( 1)='Ritz_norm'
3181 vinfo( 2)='Ritz eigenvectors Euclidean norm'
3182 status=def_var(ng, model, his(ng)%pioFile, vardesc,
pio_type, &
3183 & 1, (/recdim/), aval, vinfo, ncname, &
3184 & setparaccess = .true.)
3185 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3186# endif
3187# ifdef WET_DRY
3188
3189
3190
3191 vinfo( 1)=vname(1,idpwet)
3192 vinfo( 2)=vname(2,idpwet)
3193 vinfo( 3)=vname(3,idpwet)
3194 vinfo( 9)='land'
3195 vinfo(10)='water'
3196 vinfo(14)=vname(4,idpwet)
3197 vinfo(16)=vname(1,idtime)
3198 vinfo(21)=vname(6,idpwet)
3199 vinfo(22)='coordinates'
3200 aval(5)=real(iinfo(1,idpwet,ng),r8)
3201 his(ng)%pioVar(idpwet)%dkind=
pio_fout
3202 his(ng)%pioVar(idpwet)%gtype=p2dvar
3203
3204 status=def_var(ng, model, his(ng)%pioFile, &
3205 & his(ng)%pioVar(idpwet)%vd, &
3206 &
pio_fout, nvd3, sp2dgrd, aval, vinfo, ncname, &
3207 & setfillval = .false.)
3208 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3209
3210
3211
3212 vinfo( 1)=vname(1,idrwet)
3213 vinfo( 2)=vname(2,idrwet)
3214 vinfo( 3)=vname(3,idrwet)
3215 vinfo( 9)='land'
3216 vinfo(10)='water'
3217 vinfo(14)=vname(4,idrwet)
3218 vinfo(16)=vname(1,idtime)
3219 vinfo(21)=vname(6,idrwet)
3220 vinfo(22)='coordinates'
3221 aval(5)=real(iinfo(1,idrwet,ng),r8)
3222 his(ng)%pioVar(idrwet)%dkind=
pio_fout
3223 his(ng)%pioVar(idrwet)%gtype=r2dvar
3224
3225 status=def_var(ng, model, his(ng)%pioFile, &
3226 & his(ng)%pioVar(idrwet)%vd, &
3227 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
3228 & setfillval = .false.)
3229 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3230
3231
3232
3233 vinfo( 1)=vname(1,iduwet)
3234 vinfo( 2)=vname(2,iduwet)
3235 vinfo( 3)=vname(3,iduwet)
3236 vinfo( 9)='land'
3237 vinfo(10)='water'
3238 vinfo(14)=vname(4,iduwet)
3239 vinfo(16)=vname(1,idtime)
3240 vinfo(21)=vname(6,iduwet)
3241 vinfo(22)='coordinates'
3242 aval(5)=real(iinfo(1,iduwet,ng),r8)
3243 his(ng)%pioVar(iduwet)%dkind=
pio_fout
3244 his(ng)%pioVar(iduwet)%gtype=u2dvar
3245
3246 status=def_var(ng, model, his(ng)%pioFile, &
3247 & his(ng)%pioVar(iduwet)%vd, &
3248 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname, &
3249 & setfillval = .false.)
3250 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3251
3252
3253
3254 vinfo( 1)=vname(1,idvwet)
3255 vinfo( 2)=vname(2,idvwet)
3256 vinfo( 3)=vname(3,idvwet)
3257 vinfo(14)=vname(4,idvwet)
3258 vinfo(16)=vname(1,idtime)
3259 vinfo( 9)='land'
3260 vinfo(10)='water'
3261 vinfo(21)=vname(6,idvwet)
3262 vinfo(22)='coordinates'
3263 aval(5)=real(iinfo(1,idvwet,ng),r8)
3264 his(ng)%pioVar(idvwet)%dkind=
pio_fout
3265 his(ng)%pioVar(idvwet)%gtype=v2dvar
3266
3267 status=def_var(ng, model, his(ng)%pioFile, &
3268 & his(ng)%pioVar(idvwet)%vd, &
3269 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname, &
3270 & setfillval = .false.)
3271 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3272# endif
3273# ifdef SOLVE3D
3274
3275
3276
3277 IF (hout(idpthr,ng)) THEN
3278 vinfo( 1)=vname(1,idpthr)
3279 WRITE (vinfo( 2),40) trim(vname(2,idpthr))
3280 vinfo( 3)=vname(3,idpthr)
3281 vinfo(14)=vname(4,idpthr)
3282 vinfo(16)=vname(1,idtime)
3283# if defined WRITE_WATER && defined MASKING
3284 vinfo(20)='mask_rho'
3285# endif
3286 vinfo(21)=vname(6,idpthr)
3287 vinfo(22)='coordinates'
3288 aval(5)=real(iinfo(1,idpthr,ng),r8)
3289 his(ng)%pioVar(idpthr)%dkind=
pio_fout
3290 his(ng)%pioVar(idpthr)%gtype=r3dvar
3291
3292 status=def_var(ng, model, his(ng)%pioFile, &
3293 & his(ng)%pioVar(idpthr)%vd, &
3294 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname, &
3295 & setfillval = .false.)
3296 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3297 END IF
3298
3299
3300
3301 IF (hout(idpthu,ng)) THEN
3302 vinfo( 1)=vname(1,idpthu)
3303 WRITE (vinfo( 2),40) trim(vname(2,idpthu))
3304 vinfo( 3)=vname(3,idpthu)
3305 vinfo(14)=vname(4,idpthu)
3306 vinfo(16)=vname(1,idtime)
3307# if defined WRITE_WATER && defined MASKING
3308 vinfo(20)='mask_u'
3309# endif
3310 vinfo(21)=vname(6,idpthu)
3311 vinfo(22)='coordinates'
3312 aval(5)=real(iinfo(1,idpthu,ng),r8)
3313 his(ng)%pioVar(idpthu)%dkind=
pio_fout
3314 his(ng)%pioVar(idpthu)%gtype=u3dvar
3315
3316 status=def_var(ng, model, his(ng)%pioFile, &
3317 & his(ng)%pioVar(idpthu)%vd, &
3318 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname, &
3319 & setfillval = .false.)
3320 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3321 END IF
3322
3323
3324
3325 IF (hout(idpthv,ng)) THEN
3326 vinfo( 1)=vname(1,idpthv)
3327 WRITE (vinfo( 2),40) trim(vname(2,idpthv))
3328 vinfo( 3)=vname(3,idpthv)
3329 vinfo(14)=vname(4,idpthv)
3330 vinfo(16)=vname(1,idtime)
3331# if defined WRITE_WATER && defined MASKING
3332 vinfo(20)='mask_v'
3333# endif
3334 vinfo(21)=vname(6,idpthv)
3335 vinfo(22)='coordinates'
3336 aval(5)=real(iinfo(1,idpthv,ng),r8)
3337 his(ng)%pioVar(idpthv)%dkind=
pio_fout
3338 his(ng)%pioVar(idpthv)%gtype=v3dvar
3339
3340 status=def_var(ng, model, his(ng)%pioFile, &
3341 & his(ng)%pioVar(idpthv)%vd, &
3342 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname, &
3343 & setfillval = .false.)
3344 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3345 END IF
3346
3347
3348
3349 IF (hout(idpthw,ng)) THEN
3350 vinfo( 1)=vname(1,idpthw)
3351 WRITE (vinfo( 2),40) trim(vname(2,idpthw))
3352 vinfo( 3)=vname(3,idpthw)
3353 vinfo(14)=vname(4,idpthw)
3354 vinfo(16)=vname(1,idtime)
3355# if defined WRITE_WATER && defined MASKING
3356 vinfo(20)='mask_rho'
3357# endif
3358 vinfo(21)=vname(6,idpthw)
3359 vinfo(22)='coordinates'
3360 aval(5)=real(iinfo(1,idpthw,ng),r8)
3361 his(ng)%pioVar(idpthw)%dkind=
pio_fout
3362 his(ng)%pioVar(idpthw)%gtype=w3dvar
3363
3364 status=def_var(ng, model, his(ng)%pioFile, &
3365 & his(ng)%pioVar(idpthw)%vd, &
3366 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
3367 & setfillval = .false.)
3368 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3369 END IF
3370# endif
3371
3372
3373
3374 IF (hout(idfsur,ng)) THEN
3375 vinfo( 1)=vname(1,idfsur)
3376 vinfo( 2)=vname(2,idfsur)
3377 vinfo( 3)=vname(3,idfsur)
3378 vinfo(14)=vname(4,idfsur)
3379 vinfo(16)=vname(1,idtime)
3380# if defined WRITE_WATER && defined MASKING
3381 vinfo(20)='mask_rho'
3382# endif
3383 vinfo(21)=vname(6,idfsur)
3384 vinfo(22)='coordinates'
3385 aval(5)=real(iinfo(1,idfsur,ng),r8)
3386 his(ng)%pioVar(idfsur)%dkind=
pio_fout
3387 his(ng)%pioVar(idfsur)%gtype=r2dvar
3388
3389 status=def_var(ng, model, his(ng)%pioFile, &
3390 & his(ng)%pioVar(idfsur)%vd, &
3391# ifdef WET_DRY
3392 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname, &
3393 & setfillval = .false.)
3394# else
3395 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3396# endif
3397 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3398
3399# if defined FORWARD_WRITE && defined FORWARD_RHS
3400
3401 vinfo( 1)=vname(1,idrzet)
3402 vinfo( 2)=vname(2,idrzet)
3403 vinfo( 3)=vname(3,idrzet)
3404 vinfo(14)=vname(4,idrzet)
3405 vinfo(16)=vname(1,idtime)
3406# if defined WRITE_WATER && defined MASKING
3407 vinfo(20)='mask_rho'
3408# endif
3409 vinfo(21)=vname(6,idrzet)
3410 vinfo(22)='coordinates'
3411 aval(5)=real(iinfo(1,idrzet,ng),r8)
3412 his(ng)%pioVar(idrzet)%dkind=
pio_fout
3413 his(ng)%pioVar(idrzet)%gtype=r2dvar
3414
3415 status=def_var(ng, model, his(ng)%pioFile, &
3416 & his(ng)%pioVar(idrzet)%vd, &
3417 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3418 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3419# endif
3420 END IF
3421
3422# ifdef ADJUST_BOUNDARY
3423
3424
3425
3426 IF (any(lobc(:,isfsur,ng))) THEN
3427 ifield=idsbry(isfsur)
3428 vinfo( 1)=vname(1,ifield)
3429 vinfo( 2)=vname(2,ifield)
3430 vinfo( 3)=vname(3,ifield)
3431 vinfo(14)=vname(4,ifield)
3432 vinfo(16)=vname(1,idtime)
3433 vinfo(21)=vname(6,ifield)
3434 aval(5)=real(iinfo(1,ifield,ng),r8)
3435 his(ng)%pioVar(ifield)%dkind=
pio_fout
3436 his(ng)%pioVar(ifield)%gtype=r2dobc
3437
3438 status=def_var(ng, model, his(ng)%pioFile, &
3439 & his(ng)%pioVar(ifield)%vd, &
3440 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
3441 & setfillval = .false.)
3442 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3443 END IF
3444# endif
3445
3446
3447
3448 IF (hout(idubar,ng)) THEN
3449 vinfo( 1)=vname(1,idubar)
3450 vinfo( 2)=vname(2,idubar)
3451 vinfo( 3)=vname(3,idubar)
3452 vinfo(14)=vname(4,idubar)
3453 vinfo(16)=vname(1,idtime)
3454# if defined WRITE_WATER && defined MASKING
3455 vinfo(20)='mask_u'
3456# endif
3457 vinfo(21)=vname(6,idubar)
3458 vinfo(22)='coordinates'
3459 aval(5)=real(iinfo(1,idubar,ng),r8)
3460 his(ng)%pioVar(idubar)%dkind=
pio_fout
3461 his(ng)%pioVar(idubar)%gtype=u2dvar
3462
3463 status=def_var(ng, model, his(ng)%pioFile, &
3464 & his(ng)%pioVar(idubar)%vd, &
3465 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3466 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3467
3468# ifdef FORWARD_WRITE
3469# ifdef FORWARD_RHS
3470
3471 vinfo( 1)=vname(1,idru2d)
3472 vinfo( 2)=vname(2,idru2d)
3473 vinfo( 3)=vname(3,idru2d)
3474 vinfo(14)=vname(4,idru2d)
3475 vinfo(16)=vname(1,idtime)
3476# if defined WRITE_WATER && defined MASKING
3477 vinfo(20)='mask_u'
3478# endif
3479 vinfo(21)=vname(6,idru2d)
3480 vinfo(22)='coordinates'
3481 aval(5)=real(iinfo(1,idru2d,ng),r8)
3482 his(ng)%pioVar(idru2d)%dkind=
pio_fout
3483 his(ng)%pioVar(idru2d)%gtype=u2dvar
3484
3485 status=def_var(ng, model, his(ng)%pioFile, &
3486 & his(ng)%pioVar(idru2d)%vd, &
3487 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3488 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3489# endif
3490# ifdef SOLVE3D
3491# ifdef FORWARD_RHS
3492
3493 vinfo( 1)=vname(1,idruct)
3494 vinfo( 2)=vname(2,idruct)
3495 vinfo( 3)=vname(3,idruct)
3496 vinfo(14)=vname(4,idruct)
3497 vinfo(16)=vname(1,idtime)
3498# if defined WRITE_WATER && defined MASKING
3499 vinfo(20)='mask_u'
3500# endif
3501 vinfo(21)=vname(6,idruct)
3502 vinfo(22)='coordinates'
3503 aval(5)=real(iinfo(1,idruct,ng),r8)
3504 his(ng)%pioVar(idruct)%dkind=
pio_fout
3505 his(ng)%pioVar(idruct)%gtype=u2dvar
3506
3507 status=def_var(ng, model, his(ng)%pioFile, &
3508 & his(ng)%pioVar(idruct)%vd, &
3509 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3510 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3511# endif
3512
3513 vinfo( 1)=vname(1,idufx1)
3514 vinfo( 2)=vname(2,idufx1)
3515 vinfo( 3)=vname(3,idufx1)
3516 vinfo(14)=vname(4,idufx1)
3517 vinfo(16)=vname(1,idtime)
3518# if defined WRITE_WATER && defined MASKING
3519 vinfo(20)='mask_u'
3520# endif
3521 vinfo(21)=vname(6,idufx1)
3522 vinfo(22)='coordinates'
3523 aval(5)=real(iinfo(1,idufx1,ng),r8)
3524 his(ng)%pioVar(idufx1)%dkind=
pio_fout
3525 his(ng)%pioVar(idufx1)%gtype=u2dvar
3526
3527 status=def_var(ng, model, his(ng)%pioFile, &
3528 & his(ng)%pioVar(idufx1)%vd, &
3529 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3530 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3531
3532 vinfo( 1)=vname(1,idufx2)
3533 vinfo( 2)=vname(2,idufx2)
3534 vinfo( 3)=vname(3,idufx2)
3535 vinfo(14)=vname(4,idufx2)
3536 vinfo(16)=vname(1,idtime)
3537# if defined WRITE_WATER && defined MASKING
3538 vinfo(20)='mask_u'
3539# endif
3540 vinfo(21)=vname(6,idufx2)
3541 vinfo(22)='coordinates'
3542 aval(5)=real(iinfo(1,idufx2,ng),r8)
3543 his(ng)%pioVar(idufx2)%dkind=
pio_fout
3544 his(ng)%pioVar(idufx2)%gtype=u2dvar
3545
3546 status=def_var(ng, model, his(ng)%pioFile, &
3547 & his(ng)%pioVar(idufx2)%vd, &
3548 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
3549 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3550# endif
3551# endif
3552 END IF
3553
3554# ifdef ADJUST_BOUNDARY
3555
3556
3557
3558 IF (any(lobc(:,isubar,ng))) THEN
3559 ifield=idsbry(isubar)
3560 vinfo( 1)=vname(1,ifield)
3561 vinfo( 2)=vname(2,ifield)
3562 vinfo( 3)=vname(3,ifield)
3563 vinfo(14)=vname(4,ifield)
3564 vinfo(16)=vname(1,idtime)
3565 vinfo(21)=vname(6,ifield)
3566 aval(5)=real(iinfo(1,ifield,ng),r8)
3567 his(ng)%pioVar(ifield)%dkind=
pio_fout
3568 his(ng)%pioVar(ifield)%gtype=u2dobc
3569
3570 status=def_var(ng, model, his(ng)%pioFile, &
3571 & his(ng)%pioVar(ifield)%vd, &
3572 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
3573 & setfillval = .false.)
3574 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3575 END IF
3576# endif
3577
3578
3579
3580 IF (hout(idvbar,ng)) THEN
3581 vinfo( 1)=vname(1,idvbar)
3582 vinfo( 2)=vname(2,idvbar)
3583 vinfo( 3)=vname(3,idvbar)
3584 vinfo(14)=vname(4,idvbar)
3585 vinfo(16)=vname(1,idtime)
3586# if defined WRITE_WATER && defined MASKING
3587 vinfo(20)='mask_v'
3588# endif
3589 vinfo(21)=vname(6,idvbar)
3590 vinfo(22)='coordinates'
3591 aval(5)=real(iinfo(1,idvbar,ng),r8)
3592 his(ng)%pioVar(idvbar)%dkind=
pio_fout
3593 his(ng)%pioVar(idvbar)%gtype=v2dvar
3594
3595 status=def_var(ng, model, his(ng)%pioFile, &
3596 & his(ng)%pioVar(idvbar)%vd, &
3597 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3598 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3599
3600# ifdef FORWARD_WRITE
3601# ifdef FORWARD_RHS
3602
3603 vinfo( 1)=vname(1,idrv2d)
3604 vinfo( 2)=vname(2,idrv2d)
3605 vinfo( 3)=vname(3,idrv2d)
3606 vinfo(14)=vname(4,idrv2d)
3607 vinfo(16)=vname(1,idtime)
3608# if defined WRITE_WATER && defined MASKING
3609 vinfo(20)='mask_v'
3610# endif
3611 vinfo(21)=vname(6,idrv2d)
3612 vinfo(22)='coordinates'
3613 aval(5)=real(iinfo(1,idrv2d,ng),r8)
3614 his(ng)%pioVar(idrv2d)%dkind=
pio_fout
3615 his(ng)%pioVar(idrv2d)%gtype=v2dvar
3616
3617 status=def_var(ng, model, his(ng)%pioFile, &
3618 & his(ng)%pioVar(idrv2d)%vd, &
3619 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3620 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3621# endif
3622# ifdef SOLVE3D
3623# ifdef FORWARD_RHS
3624
3625 vinfo( 1)=vname(1,idrvct)
3626 vinfo( 2)=vname(2,idrvct)
3627 vinfo( 3)=vname(3,idrvct)
3628 vinfo(14)=vname(4,idrvct)
3629 vinfo(16)=vname(1,idtime)
3630# if defined WRITE_WATER && defined MASKING
3631 vinfo(20)='mask_v'
3632# endif
3633 vinfo(21)=vname(6,idrvct)
3634 vinfo(22)='coordinates'
3635 aval(5)=real(iinfo(1,idrvct,ng),r8)
3636 his(ng)%pioVar(idrvct)%dkind=
pio_fout
3637 his(ng)%pioVar(idrvct)%gtype=v2dvar
3638
3639 status=def_var(ng, model, his(ng)%pioFile, &
3640 & his(ng)%pioVar(idrvct)%vd, &
3641 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3642 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3643# endif
3644
3645 vinfo( 1)=vname(1,idvfx1)
3646 vinfo( 2)=vname(2,idvfx1)
3647 vinfo( 3)=vname(3,idvfx1)
3648 vinfo(14)=vname(4,idvfx1)
3649 vinfo(16)=vname(1,idtime)
3650# if defined WRITE_WATER && defined MASKING
3651 vinfo(20)='mask_v'
3652# endif
3653 vinfo(21)=vname(6,idvfx1)
3654 vinfo(22)='coordinates'
3655 aval(5)=real(iinfo(1,idvfx1,ng),r8)
3656 his(ng)%pioVar(idvfx1)%dkind=
pio_fout
3657 his(ng)%pioVar(idvfx1)%gtype=v2dvar
3658
3659 status=def_var(ng, model, his(ng)%pioFile, &
3660 & his(ng)%pioVar(idvfx1)%vd, &
3661 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3662 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3663
3664 vinfo( 1)=vname(1,idvfx2)
3665 vinfo( 2)=vname(2,idvfx2)
3666 vinfo( 3)=vname(3,idvfx2)
3667 vinfo(14)=vname(4,idvfx2)
3668 vinfo(16)=vname(1,idtime)
3669# if defined WRITE_WATER && defined MASKING
3670 vinfo(20)='mask_v'
3671# endif
3672 vinfo(21)=vname(6,idvfx2)
3673 vinfo(22)='coordinates'
3674 aval(5)=real(iinfo(1,idvfx2,ng),r8)
3675 his(ng)%pioVar(idvfx2)%dkind=
pio_fout
3676 his(ng)%pioVar(idvfx2)%gtype=v2dvar
3677
3678 status=def_var(ng, model, his(ng)%pioFile, &
3679 & his(ng)%pioVar(idvfx2)%vd, &
3680 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
3681 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3682# endif
3683# endif
3684 END IF
3685
3686# ifdef ADJUST_BOUNDARY
3687
3688
3689
3690 IF (any(lobc(:,isvbar,ng))) THEN
3691 ifield=idsbry(isvbar)
3692 vinfo( 1)=vname(1,ifield)
3693 vinfo( 2)=vname(2,ifield)
3694 vinfo( 3)=vname(3,ifield)
3695 vinfo(14)=vname(4,ifield)
3696 vinfo(16)=vname(1,idtime)
3697 vinfo(21)=vname(6,ifield)
3698 aval(5)=real(iinfo(1,ifield,ng),r8)
3699 his(ng)%pioVar(ifield)%dkind=
pio_fout
3700 his(ng)%pioVar(ifield)%gtype=v2dobc
3701
3702 status=def_var(ng, model, his(ng)%pioFile, &
3703 & his(ng)%pioVar(ifield)%vd, &
3704 &
pio_fout, 4, t2dobc, aval, vinfo, ncname, &
3705 & setfillval = .false.)
3706 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3707 END IF
3708# endif
3709
3710
3711
3712 IF (hout(idu2de,ng)) THEN
3713 vinfo( 1)=vname(1,idu2de)
3714 vinfo( 2)=vname(2,idu2de)
3715 vinfo( 3)=vname(3,idu2de)
3716 vinfo(14)=vname(4,idu2de)
3717 vinfo(16)=vname(1,idtime)
3718# if defined WRITE_WATER && defined MASKING
3719 vinfo(20)='mask_rho'
3720# endif
3721 vinfo(21)=vname(6,idu2de)
3722 vinfo(22)='coordinates'
3723 aval(5)=real(iinfo(1,idu2de,ng),r8)
3724 his(ng)%pioVar(idu2de)%dkind=
pio_fout
3725 his(ng)%pioVar(idu2de)%gtype=r2dvar
3726
3727 status=def_var(ng, model, his(ng)%pioFile, &
3728 & his(ng)%pioVar(idu2de)%vd, &
3729 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3730 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3731 END IF
3732
3733
3734
3735 IF (hout(idv2dn,ng)) THEN
3736 vinfo( 1)=vname(1,idv2dn)
3737 vinfo( 2)=vname(2,idv2dn)
3738 vinfo( 3)=vname(3,idv2dn)
3739 vinfo(14)=vname(4,idv2dn)
3740 vinfo(16)=vname(1,idtime)
3741# if defined WRITE_WATER && defined MASKING
3742 vinfo(20)='mask_rho'
3743# endif
3744 vinfo(21)=vname(6,idv2dn)
3745 vinfo(22)='coordinates'
3746 aval(5)=real(iinfo(1,idv2dn,ng),r8)
3747 his(ng)%pioVar(idv2dn)%dkind=
pio_fout
3748 his(ng)%pioVar(idv2dn)%gtype=r2dvar
3749
3750 status=def_var(ng, model, his(ng)%pioFile, &
3751 & his(ng)%pioVar(idv2dn)%vd, &
3752 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
3753 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3754 END IF
3755
3756# ifdef SOLVE3D
3757
3758
3759
3760 IF (hout(iduvel,ng)) THEN
3761 vinfo( 1)=vname(1,iduvel)
3762 vinfo( 2)=vname(2,iduvel)
3763 vinfo( 3)=vname(3,iduvel)
3764 vinfo(14)=vname(4,iduvel)
3765 vinfo(16)=vname(1,idtime)
3766# if defined WRITE_WATER && defined MASKING
3767 vinfo(20)='mask_u'
3768# endif
3769 vinfo(21)=vname(6,iduvel)
3770 vinfo(22)='coordinates'
3771 aval(5)=real(iinfo(1,iduvel,ng),r8)
3772 his(ng)%pioVar(iduvel)%dkind=
pio_fout
3773 his(ng)%pioVar(iduvel)%gtype=u3dvar
3774
3775 status=def_var(ng, model, his(ng)%pioFile, &
3776 & his(ng)%pioVar(iduvel)%vd, &
3777 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
3778 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3779
3780# if defined FORWARD_WRITE && defined FORWARD_RHS
3781
3782 vinfo( 1)=vname(1,idru3d)
3783 vinfo( 2)=vname(2,idru3d)
3784 vinfo( 3)=vname(3,idru3d)
3785 vinfo(14)=vname(4,idru3d)
3786 vinfo(16)=vname(1,idtime)
3787# if defined WRITE_WATER && defined MASKING
3788 vinfo(20)='mask_u'
3789# endif
3790 vinfo(21)=vname(6,idru3d)
3791 vinfo(22)='coordinates'
3792 aval(5)=real(iinfo(1,idru3d,ng),r8)
3793 his(ng)%pioVar(idru3d)%dkind=
pio_fout
3794 his(ng)%pioVar(idru3d)%gtype=u3dvar
3795
3796 status=def_var(ng, model, his(ng)%pioFile, &
3797 & his(ng)%pioVar(idru3d)%vd, &
3798 &
pio_fout, nvd4, u3dgrd, aval, vinfo, ncname)
3799 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3800# endif
3801 END IF
3802
3803# ifdef ADJUST_BOUNDARY
3804
3805
3806
3807 IF (any(lobc(:,isuvel,ng))) THEN
3808 ifield=idsbry(isuvel)
3809 vinfo( 1)=vname(1,ifield)
3810 vinfo( 2)=vname(2,ifield)
3811 vinfo( 3)=vname(3,ifield)
3812 vinfo(14)=vname(4,ifield)
3813 vinfo(16)=vname(1,idtime)
3814 vinfo(21)=vname(6,ifield)
3815 aval(5)=real(iinfo(1,ifield,ng),r8)
3816 his(ng)%pioVar(ifield)%dkind=
pio_fout
3817 his(ng)%pioVar(ifield)%gtype=u3dobc
3818
3819 status=def_var(ng, model, his(ng)%pioFile, &
3820 & his(ng)%pioVar(ifield)%vd, &
3821 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
3822 & setfillval = .false.)
3823 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3824 END IF
3825# endif
3826
3827
3828
3829 IF (hout(idvvel,ng)) THEN
3830 vinfo( 1)=vname(1,idvvel)
3831 vinfo( 2)=vname(2,idvvel)
3832 vinfo( 3)=vname(3,idvvel)
3833 vinfo(14)=vname(4,idvvel)
3834 vinfo(16)=vname(1,idtime)
3835# if defined WRITE_WATER && defined MASKING
3836 vinfo(20)='mask_v'
3837# endif
3838 vinfo(21)=vname(6,idvvel)
3839 vinfo(22)='coordinates'
3840 aval(5)=real(iinfo(1,idvvel,ng),r8)
3841 his(ng)%pioVar(idvvel)%dkind=
pio_fout
3842 his(ng)%pioVar(idvvel)%gtype=v3dvar
3843
3844 status=def_var(ng, model, his(ng)%pioFile, &
3845 & his(ng)%pioVar(idvvel)%vd, &
3846 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
3847 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3848
3849# if defined FORWARD_WRITE && defined FORWARD_RHS
3850
3851 vinfo( 1)=vname(1,idrv3d)
3852 vinfo( 2)=vname(2,idrv3d)
3853 vinfo( 3)=vname(3,idrv3d)
3854 vinfo(14)=vname(4,idrv3d)
3855 vinfo(16)=vname(1,idtime)
3856# if defined WRITE_WATER && defined MASKING
3857 vinfo(20)='mask_v'
3858# endif
3859 vinfo(21)=vname(6,idrv3d)
3860 vinfo(22)='coordinates'
3861 aval(5)=real(iinfo(1,idrv3d,ng),r8)
3862 his(ng)%pioVar(idrv3d)%dkind=
pio_fout
3863 his(ng)%pioVar(idrv3d)%gtype=v3dvar
3864
3865 status=def_var(ng, model, his(ng)%pioFile, &
3866 & his(ng)%pioVar(idrv3d)%vd, &
3867 &
pio_fout, nvd4, v3dgrd, aval, vinfo, ncname)
3868 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3869# endif
3870 END IF
3871
3872# ifdef ADJUST_BOUNDARY
3873
3874
3875
3876 IF (any(lobc(:,isvvel,ng))) THEN
3877 ifield=idsbry(isvvel)
3878 vinfo( 1)=vname(1,ifield)
3879 vinfo( 2)=vname(2,ifield)
3880 vinfo( 3)=vname(3,ifield)
3881 vinfo(14)=vname(4,ifield)
3882 vinfo(16)=vname(1,idtime)
3883 vinfo(21)=vname(6,ifield)
3884 aval(5)=real(iinfo(1,ifield,ng),r8)
3885 his(ng)%pioVar(ifield)%dkind=
pio_fout
3886 his(ng)%pioVar(ifield)%gtype=v3dobc
3887
3888 status=def_var(ng, model, his(ng)%pioFile, &
3889 & his(ng)%pioVar(ifield)%vd, &
3890 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
3891 & setfillval = .false.)
3892 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3893 END IF
3894# endif
3895
3896
3897
3898 IF (hout(idu3de,ng)) THEN
3899 vinfo( 1)=vname(1,idu3de)
3900 vinfo( 2)=vname(2,idu3de)
3901 vinfo( 3)=vname(3,idu3de)
3902 vinfo(14)=vname(4,idu3de)
3903 vinfo(16)=vname(1,idtime)
3904# if defined WRITE_WATER && defined MASKING
3905 vinfo(20)='mask_rho'
3906# endif
3907 vinfo(21)=vname(6,idu3de)
3908 vinfo(22)='coordinates'
3909 aval(5)=real(iinfo(1,idu3de,ng),r8)
3910 his(ng)%pioVar(idu3de)%dkind=
pio_fout
3911 his(ng)%pioVar(idu3de)%gtype=r3dvar
3912
3913 status=def_var(ng, model, his(ng)%pioFile, &
3914 & his(ng)%pioVar(idu3de)%vd, &
3915 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3916 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3917 END IF
3918
3919
3920
3921 IF (hout(idv3dn,ng)) THEN
3922 vinfo( 1)=vname(1,idv3dn)
3923 vinfo( 2)=vname(2,idv3dn)
3924 vinfo( 3)=vname(3,idv3dn)
3925 vinfo(14)=vname(4,idv3dn)
3926 vinfo(16)=vname(1,idtime)
3927# if defined WRITE_WATER && defined MASKING
3928 vinfo(20)='mask_rho'
3929# endif
3930 vinfo(21)=vname(6,idv3dn)
3931 vinfo(22)='coordinates'
3932 aval(5)=real(iinfo(1,idv3dn,ng),r8)
3933 his(ng)%pioVar(idv3dn)%dkind=
pio_fout
3934 his(ng)%pioVar(idv3dn)%gtype=r3dvar
3935
3936 status=def_var(ng, model, his(ng)%pioFile, &
3937 & his(ng)%pioVar(idv3dn)%vd, &
3938 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
3939 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3940 END IF
3941
3942
3943
3944 IF (hout(idwvel,ng)) THEN
3945 vinfo( 1)=vname(1,idwvel)
3946 vinfo( 2)=vname(2,idwvel)
3947 vinfo( 3)=vname(3,idwvel)
3948 vinfo(14)=vname(4,idwvel)
3949 vinfo(16)=vname(1,idtime)
3950# if defined WRITE_WATER && defined MASKING
3951 vinfo(20)='mask_rho'
3952# endif
3953 vinfo(21)=vname(6,idwvel)
3954 vinfo(22)='coordinates'
3955 aval(5)=real(iinfo(1,idwvel,ng),r8)
3956 his(ng)%pioVar(idwvel)%dkind=
pio_fout
3957 his(ng)%pioVar(idwvel)%gtype=w3dvar
3958
3959 status=def_var(ng, model, his(ng)%pioFile, &
3960 & his(ng)%pioVar(idwvel)%vd, &
3961 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3962 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3963 END IF
3964
3965
3966
3967 IF (hout(idovel,ng)) THEN
3968 vinfo( 1)=vname(1,idovel)
3969 vinfo( 2)=vname(2,idovel)
3970 vinfo( 3)='meter second-1'
3971 vinfo(14)=vname(4,idovel)
3972 vinfo(16)=vname(1,idtime)
3973# if defined WRITE_WATER && defined MASKING
3974 vinfo(20)='mask_rho'
3975# endif
3976 vinfo(21)=vname(6,idovel)
3977 vinfo(22)='coordinates'
3978 aval(5)=real(iinfo(1,idovel,ng),r8)
3979 his(ng)%pioVar(idovel)%dkind=
pio_fout
3980 his(ng)%pioVar(idovel)%gtype=w3dvar
3981
3982 status=def_var(ng, model, his(ng)%pioFile, &
3983 & his(ng)%pioVar(idovel)%vd, &
3984 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
3985 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
3986 END IF
3987
3988# ifdef OMEGA_IMPLICIT
3989
3990
3991
3992 IF (hout(idovil,ng)) THEN
3993 vinfo( 1)=vname(1,idovil)
3994 vinfo( 2)=vname(2,idovil)
3995 vinfo( 3)='meter second-1'
3996 vinfo(14)=vname(4,idovil)
3997 vinfo(16)=vname(1,idtime)
3998# if defined WRITE_WATER && defined MASKING
3999 vinfo(20)='mask_rho'
4000# endif
4001 vinfo(21)=vname(6,idovil)
4002 vinfo(22)='coordinates'
4003 aval(5)=real(iinfo(1,idovil,ng),r8)
4004 his(ng)%pioVar(idovil)%dkind=
pio_fout
4005 his(ng)%pioVar(idovil)%gtype=w3dvar
4006
4007 status=def_var(ng, model, his(ng)%pioFile, &
4008 & his(ng)%pioVar(idovil)%vd, &
4009 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4010 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4011 END IF
4012# endif
4013
4014
4015
4016 DO itrc=1,nt(ng)
4017 IF (hout(idtvar(itrc),ng)) THEN
4018 vinfo( 1)=vname(1,idtvar(itrc))
4019 vinfo( 2)=vname(2,idtvar(itrc))
4020 vinfo( 3)=vname(3,idtvar(itrc))
4021 vinfo(14)=vname(4,idtvar(itrc))
4022 vinfo(16)=vname(1,idtime)
4023# ifdef SEDIMENT
4024 DO i=1,nst
4025 IF (itrc.eq.idsed(i)) THEN
4026 WRITE (vinfo(19),50) 1000.0_r8*sd50(i,ng)
4027 END IF
4028 END DO
4029# endif
4030# if defined WRITE_WATER && defined MASKING
4031 vinfo(20)='mask_rho'
4032# endif
4033 vinfo(21)=vname(6,idtvar(itrc))
4034 vinfo(22)='coordinates'
4035 aval(5)=real(iinfo(1,idtvar(itrc),ng),r8)
4036 his(ng)%pioTrc(itrc)%dkind=
pio_fout
4037 his(ng)%pioTrc(itrc)%gtype=r3dvar
4038
4039 status=def_var(ng, model, his(ng)%pioFile, &
4040 & his(ng)%pioTrc(itrc)%vd, &
4041 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
4042 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4043 END IF
4044 END DO
4045
4046# ifdef ADJUST_BOUNDARY
4047
4048
4049
4050 DO itrc=1,nt(ng)
4051 IF (any(lobc(:,istvar(itrc),ng))) THEN
4052 ifield=idsbry(istvar(itrc))
4053 vinfo( 1)=vname(1,ifield)
4054 vinfo( 2)=vname(2,ifield)
4055 vinfo( 3)=vname(3,ifield)
4056 vinfo(14)=vname(4,ifield)
4057 vinfo(16)=vname(1,idtime)
4058# ifdef SEDIMENT
4059 DO i=1,nst
4060 IF (itrc.eq.idsed(i)) THEN
4061 WRITE (vinfo(19),60) 1000.0_r8*sd50(i,ng)
4062 END IF
4063 END DO
4064# endif
4065 vinfo(21)=vname(6,ifield)
4066 aval(5)=real(iinfo(1,ifield,ng),r8)
4067 his(ng)%pioVar(ifield)%dkind=
pio_fout
4068 his(ng)%pioVar(ifield)%gtype=r3dobc
4069
4070 status=def_var(ng, model, his(ng)%pioFile, &
4071 & his(ng)%pioVar(ifield)%vd, &
4072 &
pio_fout, 5, t3dobc, aval, vinfo, ncname, &
4073 & setfillval = .false.)
4074 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4075 END IF
4076 END DO
4077# endif
4078
4079
4080
4081 IF (hout(iddano,ng)) THEN
4082 vinfo( 1)=vname(1,iddano)
4083 vinfo( 2)=vname(2,iddano)
4084 vinfo( 3)=vname(3,iddano)
4085 vinfo(14)=vname(4,iddano)
4086 vinfo(16)=vname(1,idtime)
4087# if defined WRITE_WATER && defined MASKING
4088 vinfo(20)='mask_rho'
4089# endif
4090 vinfo(21)=vname(6,iddano)
4091 vinfo(22)='coordinates'
4092 aval(5)=real(iinfo(1,iddano,ng),r8)
4093 his(ng)%pioVar(iddano)%dkind=
pio_fout
4094 his(ng)%pioVar(iddano)%gtype=r3dvar
4095
4096 status=def_var(ng, model, his(ng)%pioFile, &
4097 & his(ng)%pioVar(iddano)%vd, &
4098 &
pio_fout, nvd4, t3dgrd, aval, vinfo, ncname)
4099 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4100 END IF
4101
4102# ifdef LMD_SKPP
4103
4104
4105
4106 IF (hout(idhsbl,ng)) THEN
4107 vinfo( 1)=vname(1,idhsbl)
4108 vinfo( 2)=vname(2,idhsbl)
4109 vinfo( 3)=vname(3,idhsbl)
4110 vinfo(14)=vname(4,idhsbl)
4111 vinfo(16)=vname(1,idtime)
4112# if defined WRITE_WATER && defined MASKING
4113 vinfo(20)='mask_rho'
4114# endif
4115 vinfo(21)=vname(6,idhsbl)
4116 vinfo(22)='coordinates'
4117 aval(5)=real(iinfo(1,idhsbl,ng),r8)
4118 his(ng)%pioVar(idhsbl)%dkind=
pio_fout
4119 his(ng)%pioVar(idhsbl)%gtype=r2dvar
4120
4121 status=def_var(ng, model, his(ng)%pioFile, &
4122 & his(ng)%pioVar(idhsbl)%vd, &
4123 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4124 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4125 END IF
4126# endif
4127# ifdef LMD_BKPP
4128
4129
4130
4131 IF (hout(idhbbl,ng)) THEN
4132 vinfo( 1)=vname(1,idhbbl)
4133 vinfo( 2)=vname(2,idhbbl)
4134 vinfo( 3)=vname(3,idhbbl)
4135 vinfo(14)=vname(4,idhbbl)
4136 vinfo(16)=vname(1,idtime)
4137# if defined WRITE_WATER && defined MASKING
4138 vinfo(20)='mask_rho'
4139# endif
4140 vinfo(21)=vname(6,idhbbl)
4141 vinfo(22)='coordinates'
4142 aval(5)=real(iinfo(1,idhbbl,ng),r8)
4143 his(ng)%pioVar(idhbbl)%dkind=
pio_fout
4144 his(ng)%pioVar(idhbbl)%gtype=r2dvar
4145
4146 status=def_var(ng, model, his(ng)%pioFile, &
4147 & his(ng)%pioVar(idhbbl)%vd, &
4148 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4149 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4150 END IF
4151# endif
4152# if defined FORWARD_WRITE && defined LMD_NONLOCAL
4153
4154
4155
4156 DO itrc=1,nat
4157 IF (hout(idghat(itrc),ng)) THEN
4158 vinfo( 1)=vname(1,idghat(itrc))
4159 vinfo( 2)=vname(2,idghat(itrc))
4160 vinfo( 3)=vname(3,idghat(itrc))
4161 vinfo(14)=vname(4,idghat(itrc))
4162 vinfo(16)=vname(1,idtime)
4163# if defined WRITE_WATER && defined MASKING
4164 vinfo(20)='mask_rho'
4165# endif
4166 vinfo(21)=vname(6,idghat(itrc))
4167 vinfo(22)='coordinates'
4168 aval(5)=real(iinfo(1,idghat(itrc),ng),r8)
4169 his(ng)%pioVar(idghat(itrc))%dkind=
pio_fout
4170 his(ng)%pioVar(idghat(itrc))%gtype=w3dvar
4171
4172 status=def_var(ng, model, his(ng)%pioFile, &
4173 & his(ng)%pioVar(idghat(itrc))%vd, &
4174 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4175 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4176 END IF
4177 END DO
4178# endif
4179
4180
4181
4182 IF (hout(idvvis,ng)) THEN
4183 vinfo( 1)=vname(1,idvvis)
4184 vinfo( 2)=vname(2,idvvis)
4185 vinfo( 3)=vname(3,idvvis)
4186 vinfo(14)=vname(4,idvvis)
4187 vinfo(16)=vname(1,idtime)
4188# if defined WRITE_WATER && defined MASKING
4189 vinfo(20)='mask_rho'
4190# endif
4191 vinfo(21)=vname(6,idvvis)
4192 vinfo(22)='coordinates'
4193 aval(5)=real(iinfo(1,idvvis,ng),r8)
4194 his(ng)%pioVar(idvvis)%dkind=
pio_fout
4195 his(ng)%pioVar(idvvis)%gtype=w3dvar
4196
4197 status=def_var(ng, model, his(ng)%pioFile, &
4198 & his(ng)%pioVar(idvvis)%vd, &
4199 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4200 & setfillval = .false.)
4201 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4202 END IF
4203
4204
4205
4206 IF (hout(idtdif,ng)) THEN
4207 vinfo( 1)=vname(1,idtdif)
4208 vinfo( 2)=vname(2,idtdif)
4209 vinfo( 3)=vname(3,idtdif)
4210 vinfo(14)=vname(4,idtdif)
4211 vinfo(16)=vname(1,idtime)
4212# if defined WRITE_WATER && defined MASKING
4213 vinfo(20)='mask_rho'
4214# endif
4215 vinfo(21)=vname(6,idtdif)
4216 vinfo(22)='coordinates'
4217 aval(5)=real(iinfo(1,idtdif,ng),r8)
4218 his(ng)%pioVar(idtdif)%dkind=
pio_fout
4219 his(ng)%pioVar(idtdif)%gtype=w3dvar
4220
4221 status=def_var(ng, model, his(ng)%pioFile, &
4222 & his(ng)%pioVar(idtdif)%vd, &
4223 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4224 & setfillval = .false.)
4225 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4226 END IF
4227
4228# ifdef SALINITY
4229
4230
4231
4232 IF (hout(idsdif,ng)) THEN
4233 vinfo( 1)=vname(1,idsdif)
4234 vinfo( 2)=vname(2,idsdif)
4235 vinfo( 3)=vname(3,idsdif)
4236 vinfo(14)=vname(4,idsdif)
4237 vinfo(16)=vname(1,idtime)
4238# if defined WRITE_WATER && defined MASKING
4239 vinfo(20)='mask_rho'
4240# endif
4241 vinfo(21)=vname(6,idsdif)
4242 vinfo(22)='coordinates'
4243 aval(5)=real(iinfo(1,idsdif,ng),r8)
4244 his(ng)%pioVar(idsdif)%dkind=
pio_fout
4245 his(ng)%pioVar(idsdif)%gtype=w3dvar
4246
4247 status=def_var(ng, model, his(ng)%pioFile, &
4248 & his(ng)%pioVar(idsdif)%vd, &
4249 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4250 & setfillval = .false.)
4251 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4252 END IF
4253# endif
4254# if defined GLS_MIXING || defined MY25_MIXING
4255
4256
4257
4258 IF (hout(idmtke,ng)) THEN
4259 vinfo( 1)=vname(1,idmtke)
4260 vinfo( 2)=vname(2,idmtke)
4261 vinfo( 3)=vname(3,idmtke)
4262 vinfo(14)=vname(4,idmtke)
4263 vinfo(16)=vname(1,idtime)
4264# if defined WRITE_WATER && defined MASKING
4265 vinfo(20)='mask_rho'
4266# endif
4267 vinfo(21)=vname(6,idmtke)
4268 vinfo(22)='coordinates'
4269 aval(5)=real(iinfo(1,idmtke,ng),r8)
4270 his(ng)%pioVar(idmtke)%dkind=
pio_fout
4271 his(ng)%pioVar(idmtke)%gtype=w3dvar
4272
4273 status=def_var(ng, model, his(ng)%pioFile, &
4274 & his(ng)%pioVar(idmtke)%vd, &
4275 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4276 & setfillval = .false.)
4277 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4278
4279# ifdef FORWARD_WRITE
4280
4281 vinfo( 1)=vname(1,idvmkk)
4282 vinfo( 2)=vname(2,idvmkk)
4283 vinfo( 3)=vname(3,idvmkk)
4284 vinfo(14)=vname(4,idvmkk)
4285 vinfo(16)=vname(1,idtime)
4286# if defined WRITE_WATER && defined MASKING
4287 vinfo(20)='mask_rho'
4288# endif
4289 vinfo(21)=vname(6,idvmkk)
4290 vinfo(22)='coordinates'
4291 aval(5)=real(iinfo(1,idvmkk,ng),r8)
4292 his(ng)%pioVar(idvmkk)%dkind=
pio_fout
4293 his(ng)%pioVar(idvmkk)%gtype=w3dvar
4294
4295 status=def_var(ng, model, his(ng)%pioFile, &
4296 & his(ng)%pioVar(idvmkk)%vd, &
4297 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4298 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4299# endif
4300 END IF
4301
4302
4303
4304 IF (hout(idmtls,ng)) THEN
4305 vinfo( 1)=vname(1,idmtls)
4306 vinfo( 2)=vname(2,idmtls)
4307 vinfo( 3)=vname(3,idmtls)
4308 vinfo(14)=vname(4,idmtls)
4309 vinfo(16)=vname(1,idtime)
4310# if defined WRITE_WATER && defined MASKING
4311 vinfo(20)='mask_rho'
4312# endif
4313 vinfo(21)=vname(6,idmtls)
4314 vinfo(22)='coordinates'
4315 aval(5)=real(iinfo(1,idmtls,ng),r8)
4316 his(ng)%pioVar(idmtls)%dkind=
pio_fout
4317 his(ng)%pioVar(idmtls)%gtype=w3dvar
4318
4319 status=def_var(ng, model, his(ng)%pioFile, &
4320 & his(ng)%pioVar(idmtls)%vd, &
4321 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname, &
4322 & setfillval = .false.)
4323 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4324
4325# ifdef FORWARD_WRITE
4326
4327 vinfo( 1)=vname(1,idvmls)
4328 vinfo( 2)=vname(2,idvmls)
4329 vinfo( 3)=vname(3,idvmls)
4330 vinfo(14)=vname(4,idvmls)
4331 vinfo(16)=vname(1,idtime)
4332# if defined WRITE_WATER && defined MASKING
4333 vinfo(20)='mask_rho'
4334# endif
4335 vinfo(21)=vname(6,idvmls)
4336 vinfo(22)='coordinates'
4337 aval(5)=real(iinfo(1,idvmls,ng),r8)
4338 his(ng)%pioVar(idvmls)%dkind=
pio_fout
4339 his(ng)%pioVar(idvmls)%gtype=w3dvar
4340
4341 status=def_var(ng, model, his(ng)%pioFile, &
4342 & his(ng)%pioVar(idvmls)%vd, &
4343 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4344 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4345# endif
4346# if defined FORWARD_WRITE && defined GLS_MIXING
4347
4348 vinfo( 1)=vname(1,idvmkp)
4349 vinfo( 2)=vname(2,idvmkp)
4350 vinfo( 3)=vname(3,idvmkp)
4351 vinfo(14)=vname(4,idvmkp)
4352 vinfo(16)=vname(1,idtime)
4353# if defined WRITE_WATER && defined MASKING
4354 vinfo(20)='mask_rho'
4355# endif
4356 vinfo(21)=vname(6,idvmkp)
4357 vinfo(22)='coordinates'
4358 aval(5)=real(iinfo(1,idvmkp,ng),r8)
4359 his(ng)%pioVar(idvmkp)%dkind=
pio_fout
4360 his(ng)%pioVar(idvmkp)%gtype=w3dvar
4361
4362 status=def_var(ng, model, his(ng)%pioFile, &
4363 & his(ng)%pioVar(idvmkp)%vd, &
4364 &
pio_fout, nvd4, w3dgrd, aval, vinfo, ncname)
4365 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4366# endif
4367 END IF
4368# endif
4369# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
4370
4371
4372
4373 IF (hout(idpair,ng)) THEN
4374 vinfo( 1)=vname(1,idpair)
4375 vinfo( 2)=vname(2,idpair)
4376 vinfo( 3)=vname(3,idpair)
4377 vinfo(14)=vname(4,idpair)
4378 vinfo(16)=vname(1,idtime)
4379# if defined WRITE_WATER && defined MASKING
4380 vinfo(20)='mask_rho'
4381# endif
4382 vinfo(21)=vname(6,idpair)
4383 vinfo(22)='coordinates'
4384 aval(5)=real(iinfo(1,idpair,ng),r8)
4385 his(ng)%pioVar(idpair)%dkind=
pio_fout
4386 his(ng)%pioVar(idpair)%gtype=r2dvar
4387
4388 status=def_var(ng, model, his(ng)%pioFile, &
4389 & his(ng)%pioVar(idpair)%vd, &
4390 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4391 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4392 END IF
4393# endif
4394# if defined BULK_FLUXES || defined ECOSIM
4395
4396
4397
4398 IF (hout(iduair,ng)) THEN
4399 vinfo( 1)=vname(1,iduair)
4400 vinfo( 2)=vname(2,iduair)
4401 vinfo( 3)=vname(3,iduair)
4402 vinfo(14)=vname(4,iduair)
4403 vinfo(16)=vname(1,idtime)
4404# if defined WRITE_WATER && defined MASKING
4405 vinfo(20)='mask_rho'
4406# endif
4407 vinfo(21)=vname(6,iduair)
4408 vinfo(22)='coordinates'
4409 aval(5)=real(iinfo(1,iduair,ng),r8)
4410 his(ng)%pioVar(iduair)%dkind=
pio_fout
4411 his(ng)%pioVar(iduair)%gtype=r2dvar
4412
4413 status=def_var(ng, model, his(ng)%pioFile, &
4414 & his(ng)%pioVar(iduair)%vd, &
4415 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4416 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4417 END IF
4418
4419 IF (hout(idvair,ng)) THEN
4420 vinfo( 1)=vname(1,idvair)
4421 vinfo( 2)=vname(2,idvair)
4422 vinfo( 3)=vname(3,idvair)
4423 vinfo(14)=vname(4,idvair)
4424 vinfo(16)=vname(1,idtime)
4425# if defined WRITE_WATER && defined MASKING
4426 vinfo(20)='mask_rho'
4427# endif
4428 vinfo(21)=vname(6,idvair)
4429 vinfo(22)='coordinates'
4430 aval(5)=real(iinfo(1,idvair,ng),r8)
4431 his(ng)%pioVar(idvair)%dkind=
pio_fout
4432 his(ng)%pioVar(idvair)%gtype=r2dvar
4433
4434 status=def_var(ng, model, his(ng)%pioFile, &
4435 & his(ng)%pioVar(idvair)%vd, &
4436 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4437 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4438 END IF
4439
4440
4441
4442 IF (hout(iduaie,ng)) THEN
4443 vinfo( 1)=vname(1,iduaie)
4444 vinfo( 2)=vname(2,iduaie)
4445 vinfo( 3)=vname(3,iduaie)
4446 vinfo(14)=vname(4,iduaie)
4447 vinfo(16)=vname(1,idtime)
4448# if defined WRITE_WATER && defined MASKING
4449 vinfo(20)='mask_rho'
4450# endif
4451 vinfo(21)=vname(6,iduaie)
4452 vinfo(22)='coordinates'
4453 aval(5)=real(iinfo(1,iduaie,ng),r8)
4454 his(ng)%pioVar(iduaie)%dkind=
pio_fout
4455 his(ng)%pioVar(iduaie)%gtype=r2dvar
4456
4457 status=def_var(ng, model, his(ng)%pioFile, &
4458 & his(ng)%pioVar(iduaie)%vd, &
4459 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4460 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4461 END IF
4462
4463 IF (hout(idvain,ng)) THEN
4464 vinfo( 1)=vname(1,idvain)
4465 vinfo( 2)=vname(2,idvain)
4466 vinfo( 3)=vname(3,idvain)
4467 vinfo(14)=vname(4,idvain)
4468 vinfo(16)=vname(1,idtime)
4469# if defined WRITE_WATER && defined MASKING
4470 vinfo(20)='mask_rho'
4471# endif
4472 vinfo(21)=vname(6,idvain)
4473 vinfo(22)='coordinates'
4474 aval(5)=real(iinfo(1,idvain,ng),r8)
4475 his(ng)%pioVar(idvain)%dkind=
pio_fout
4476 his(ng)%pioVar(idvain)%gtype=r2dvar
4477
4478 status=def_var(ng, model, his(ng)%pioFile, &
4479 & his(ng)%pioVar(idvain)%vd, &
4480 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4481 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4482 END IF
4483# endif
4484
4485
4486
4487 DO itrc=1,nat
4488 IF (hout(idtsur(itrc),ng)) THEN
4489 vinfo( 1)=vname(1,idtsur(itrc))
4490 vinfo( 2)=vname(2,idtsur(itrc))
4491 vinfo( 3)=vname(3,idtsur(itrc))
4492 IF (itrc.eq.itemp) THEN
4493 vinfo(11)='upward flux, cooling'
4494 vinfo(12)='downward flux, heating'
4495 ELSE IF (itrc.eq.isalt) THEN
4496 vinfo(11)='upward flux, freshening (net precipitation)'
4497 vinfo(12)='downward flux, salting (net evaporation)'
4498 END IF
4499 vinfo(14)=vname(4,idtsur(itrc))
4500 vinfo(16)=vname(1,idtime)
4501# if defined WRITE_WATER && defined MASKING
4502 vinfo(20)='mask_rho'
4503# endif
4504 vinfo(21)=vname(6,idtsur(itrc))
4505 vinfo(22)='coordinates'
4506 aval(5)=real(iinfo(1,idtsur(itrc),ng),r8)
4507 his(ng)%pioVar(idtsur(itrc))%dkind=
pio_fout
4508 his(ng)%pioVar(idtsur(itrc))%gtype=r2dvar
4509
4510 status=def_var(ng, model, his(ng)%pioFile, &
4511 & his(ng)%pioVar(idtsur(itrc))%vd, &
4512 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4513 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4514 END IF
4515 END DO
4516
4517# if defined BULK_FLUXES || defined FRC_COUPLING
4518
4519
4520
4521 IF (hout(idlhea,ng)) THEN
4522 vinfo( 1)=vname(1,idlhea)
4523 vinfo( 2)=vname(2,idlhea)
4524 vinfo( 3)=vname(3,idlhea)
4525 vinfo(11)='upward flux, cooling'
4526 vinfo(12)='downward flux, heating'
4527 vinfo(14)=vname(4,idlhea)
4528 vinfo(16)=vname(1,idtime)
4529# if defined WRITE_WATER && defined MASKING
4530 vinfo(20)='mask_rho'
4531# endif
4532 vinfo(21)=vname(6,idlhea)
4533 vinfo(22)='coordinates'
4534 aval(5)=real(iinfo(1,idlhea,ng),r8)
4535 his(ng)%pioVar(idlhea)%dkind=
pio_fout
4536 his(ng)%pioVar(idlhea)%gtype=r2dvar
4537
4538 status=def_var(ng, model, his(ng)%pioFile, &
4539 & his(ng)%pioVar(idlhea)%vd, &
4540 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4541 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4542 END IF
4543
4544
4545
4546 IF (hout(idshea,ng)) THEN
4547 vinfo( 1)=vname(1,idshea)
4548 vinfo( 2)=vname(2,idshea)
4549 vinfo( 3)=vname(3,idshea)
4550 vinfo(11)='upward flux, cooling'
4551 vinfo(12)='downward flux, heating'
4552 vinfo(14)=vname(4,idshea)
4553 vinfo(16)=vname(1,idtime)
4554# if defined WRITE_WATER && defined MASKING
4555 vinfo(20)='mask_rho'
4556# endif
4557 vinfo(21)=vname(6,idshea)
4558 vinfo(22)='coordinates'
4559 aval(5)=real(iinfo(1,idshea,ng),r8)
4560 his(ng)%pioVar(idshea)%dkind=
pio_fout
4561 his(ng)%pioVar(idshea)%gtype=r2dvar
4562
4563 status=def_var(ng, model, his(ng)%pioFile, &
4564 & his(ng)%pioVar(idshea)%vd, &
4565 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4566 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4567 END IF
4568
4569
4570
4571 IF (hout(idlrad,ng)) THEN
4572 vinfo( 1)=vname(1,idlrad)
4573 vinfo( 2)=vname(2,idlrad)
4574 vinfo( 3)=vname(3,idlrad)
4575 vinfo(11)='upward flux, cooling'
4576 vinfo(12)='downward flux, heating'
4577 vinfo(14)=vname(4,idlrad)
4578 vinfo(16)=vname(1,idtime)
4579# if defined WRITE_WATER && defined MASKING
4580 vinfo(20)='mask_rho'
4581# endif
4582 vinfo(21)=vname(6,idlrad)
4583 vinfo(22)='coordinates'
4584 aval(5)=real(iinfo(1,idlrad,ng),r8)
4585 his(ng)%pioVar(idlrad)%dkind=
pio_fout
4586 his(ng)%pioVar(idlrad)%gtype=r2dvar
4587
4588 status=def_var(ng, model, his(ng)%pioFile, &
4589 & his(ng)%pioVar(idlrad)%vd, &
4590 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4591 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4592 END IF
4593# endif
4594
4595# if defined BULK_FLUXES
4596
4597
4598
4599 IF (hout(idtair,ng)) THEN
4600 vinfo( 1)=vname(1,idtair)
4601 vinfo( 2)=vname(2,idtair)
4602 vinfo( 3)=vname(3,idtair)
4603 vinfo(14)=vname(4,idtair)
4604 vinfo(16)=vname(1,idtime)
4605# if defined WRITE_WATER && defined MASKING
4606 vinfo(20)='mask_rho'
4607# endif
4608 vinfo(21)=vname(6,idtair)
4609 vinfo(22)='coordinates'
4610 aval(5)=real(iinfo(1,idtair,ng),r8)
4611 his(ng)%pioVar(idtair)%dkind=
pio_fout
4612 his(ng)%pioVar(idtair)%gtype=r2dvar
4613
4614 status=def_var(ng, model, his(ng)%pioFile, &
4615 & his(ng)%pioVar(idtair)%vd, &
4616 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4617 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4618 END IF
4619
4620# ifdef EMINUSP
4621
4622
4623
4624 IF (hout(idevap,ng)) THEN
4625 vinfo( 1)=vname(1,idevap)
4626 vinfo( 2)=vname(2,idevap)
4627 vinfo( 3)=vname(3,idevap)
4628 vinfo(11)='downward flux, freshening (condensation)'
4629 vinfo(12)='upward flux, salting (evaporation)'
4630 vinfo(14)=vname(4,idevap)
4631 vinfo(16)=vname(1,idtime)
4632# if defined WRITE_WATER && defined MASKING
4633 vinfo(20)='mask_rho'
4634# endif
4635 vinfo(21)=vname(6,idevap)
4636 vinfo(22)='coordinates'
4637 aval(5)=real(iinfo(1,idevap,ng),r8)
4638 his(ng)%pioVar(idevap)%dkind=
pio_fout
4639 his(ng)%pioVar(idevap)%gtype=r2dvar
4640
4641 status=def_var(ng, model, his(ng)%pioFile, &
4642 & his(ng)%pioVar(idevap)%vd, &
4643 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4644 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4645 END IF
4646
4647
4648
4649 IF (hout(idrain,ng)) THEN
4650 vinfo( 1)=vname(1,idrain)
4651 vinfo( 2)=vname(2,idrain)
4652 vinfo( 3)=vname(3,idrain)
4653 vinfo(11)='upward flux, salting (NOT POSSIBLE)'
4654 vinfo(12)='downward flux, freshening (precipitation)'
4655 vinfo(14)=vname(4,idrain)
4656 vinfo(16)=vname(1,idtime)
4657# if defined WRITE_WATER && defined MASKING
4658 vinfo(20)='mask_rho'
4659# endif
4660 vinfo(21)=vname(6,idrain)
4661 vinfo(22)='coordinates'
4662 aval(5)=real(iinfo(1,idrain,ng),r8)
4663 his(ng)%pioVar(idrain)%dkind=
pio_fout
4664 his(ng)%pioVar(idrain)%gtype=r2dvar
4665
4666 status=def_var(ng, model, his(ng)%pioFile, &
4667 & his(ng)%pioVar(idrain)%vd, &
4668 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4669 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4670 END IF
4671# endif
4672# endif
4673
4674
4675
4676 IF (hout(idempf,ng)) THEN
4677 vinfo( 1)=vname(1,idempf)
4678 vinfo( 2)=vname(2,idempf)
4679 vinfo( 3)=vname(3,idempf)
4680 vinfo(11)='upward flux, freshening (net precipitation)'
4681 vinfo(12)='downward flux, salting (net evaporation)'
4682 vinfo(14)=vname(4,idempf)
4683 vinfo(16)=vname(1,idtime)
4684# if defined WRITE_WATER && defined MASKING
4685 vinfo(20)='mask_rho'
4686# endif
4687 vinfo(21)=vname(6,idempf)
4688 vinfo(22)='coordinates'
4689 aval(5)=real(iinfo(1,idempf,ng),r8)
4690 his(ng)%pioVar(idempf)%dkind=
pio_fout
4691 his(ng)%pioVar(idempf)%gtype=r2dvar
4692
4693 status=def_var(ng, model, his(ng)%pioFile, &
4694 & his(ng)%pioVar(idempf)%vd, &
4695 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4696 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4697 END IF
4698
4699# ifdef SHORTWAVE
4700
4701
4702
4703 IF (hout(idsrad,ng)) THEN
4704 vinfo( 1)=vname(1,idsrad)
4705 vinfo( 2)=vname(2,idsrad)
4706 vinfo( 3)=vname(3,idsrad)
4707 vinfo(11)='upward flux, cooling'
4708 vinfo(12)='downward flux, heating'
4709 vinfo(14)=vname(4,idsrad)
4710 vinfo(16)=vname(1,idtime)
4711# if defined WRITE_WATER && defined MASKING
4712 vinfo(20)='mask_rho'
4713# endif
4714 vinfo(21)=vname(6,idsrad)
4715 vinfo(22)='coordinates'
4716 aval(5)=real(iinfo(1,idsrad,ng),r8)
4717 his(ng)%pioVar(idsrad)%dkind=
pio_fout
4718 his(ng)%pioVar(idsrad)%gtype=r2dvar
4719
4720 status=def_var(ng, model, his(ng)%pioFile, &
4721 & his(ng)%pioVar(idsrad)%vd, &
4722 &
pio_fout, nvd3, t2dgrd, aval, vinfo, ncname)
4723 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4724 END IF
4725# endif
4726# endif
4727
4728
4729
4730 IF (hout(idusms,ng)) THEN
4731 vinfo( 1)=vname(1,idusms)
4732 vinfo( 2)=vname(2,idusms)
4733 vinfo( 3)=vname(3,idusms)
4734 vinfo(14)=vname(4,idusms)
4735 vinfo(16)=vname(1,idtime)
4736# if defined WRITE_WATER && defined MASKING
4737 vinfo(20)='mask_u'
4738# endif
4739 vinfo(21)=vname(6,idusms)
4740 vinfo(22)='coordinates'
4741 aval(5)=real(iinfo(1,idusms,ng),r8)
4742 his(ng)%pioVar(idusms)%dkind=
pio_fout
4743 his(ng)%pioVar(idusms)%gtype=u2dvar
4744
4745 status=def_var(ng, model, his(ng)%pioFile, &
4746 & his(ng)%pioVar(idusms)%vd, &
4747 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
4748 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4749 END IF
4750
4751
4752
4753 IF (hout(idvsms,ng)) THEN
4754 vinfo( 1)=vname(1,idvsms)
4755 vinfo( 2)=vname(2,idvsms)
4756 vinfo( 3)=vname(3,idvsms)
4757 vinfo(14)=vname(4,idvsms)
4758 vinfo(16)=vname(1,idtime)
4759# if defined WRITE_WATER && defined MASKING
4760 vinfo(20)='mask_v'
4761# endif
4762 vinfo(21)=vname(6,idvsms)
4763 vinfo(22)='coordinates'
4764 aval(5)=real(iinfo(1,idvsms,ng),r8)
4765 his(ng)%pioVar(idvsms)%dkind=
pio_fout
4766 his(ng)%pioVar(idvsms)%gtype=v2dvar
4767
4768 status=def_var(ng, model, his(ng)%pioFile, &
4769 & his(ng)%pioVar(idvsms)%vd, &
4770 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
4771 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4772 END IF
4773
4774
4775
4776 IF (hout(idubms,ng)) THEN
4777 vinfo( 1)=vname(1,idubms)
4778 vinfo( 2)=vname(2,idubms)
4779 vinfo( 3)=vname(3,idubms)
4780 vinfo(14)=vname(4,idubms)
4781 vinfo(16)=vname(1,idtime)
4782# if defined WRITE_WATER && defined MASKING
4783 vinfo(20)='mask_u'
4784# endif
4785 vinfo(21)=vname(6,idubms)
4786 vinfo(22)='coordinates'
4787 aval(5)=real(iinfo(1,idubms,ng),r8)
4788 his(ng)%pioVar(idubms)%dkind=
pio_fout
4789 his(ng)%pioVar(idubms)%gtype=u2dvar
4790
4791 status=def_var(ng, model, his(ng)%pioFile, &
4792 & his(ng)%pioVar(idubms)%vd, &
4793 &
pio_fout, nvd3, u2dgrd, aval, vinfo, ncname)
4794 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4795 END IF
4796
4797
4798
4799 IF (hout(idvbms,ng)) THEN
4800 vinfo( 1)=vname(1,idvbms)
4801 vinfo( 2)=vname(2,idvbms)
4802 vinfo( 3)=vname(3,idvbms)
4803 vinfo(14)=vname(4,idvbms)
4804 vinfo(16)=vname(1,idtime)
4805# if defined WRITE_WATER && defined MASKING
4806 vinfo(20)='mask_v'
4807# endif
4808 vinfo(21)=vname(6,idvbms)
4809 vinfo(22)='coordinates'
4810 aval(5)=real(iinfo(1,idvbms,ng),r8)
4811 his(ng)%pioVar(idvbms)%dkind=
pio_fout
4812 his(ng)%pioVar(idvbms)%gtype=v2dvar
4813
4814 status=def_var(ng, model, his(ng)%pioFile, &
4815 & his(ng)%pioVar(idvbms)%vd, &
4816 &
pio_fout, nvd3, v2dgrd, aval, vinfo, ncname)
4817 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4818 END IF
4819
4820# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
4821
4822
4823
4824
4825
4826 CALL bbl_def_pio (ng, model, ldef, hout, his, &
4827 & t2dgrd, u2dgrd, v2dgrd)
4828 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4829# endif
4830
4831# if defined ICE_MODEL && defined SOLVE3D
4832
4833
4834
4835
4836
4837 CALL ice_def_pio (ng, model, ldef, hout, his, &
4838 & t2dgrd, u2dgrd, v2dgrd)
4839 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4840# endif
4841
4842# if defined SEDIMENT && defined SOLVE3D
4843
4844
4845
4846
4847
4848 CALL sediment_def_pio (ng, model, ldef, hout, his, &
4849 & t2dgrd, u2dgrd, v2dgrd)
4850 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4851# endif
4852
4853# if defined WEC_VF && defined SOLVE3D
4854
4855
4856
4857
4858
4859 CALL wec_def_pio (ng, model, ldef, hout, his, &
4860 & t2dgrd, u2dgrd, v2dgrd, &
4861 & t3dgrd, u3dgrd, v3dgrd, w3dgrd)
4862 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4863# endif
4864
4865
4866
4867
4868
4870 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4871
4872
4873
4874
4875
4876 CALL wrt_info (ng, model, his(ng)%pioFile, ncname)
4877 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4878 END IF define
4879
4880
4881
4882
4883
4884
4885 query : IF (.not.ldef) THEN
4886 ncname=his(ng)%name
4887
4888
4889
4891 IF (founderror(exit_flag, noerror, __line__, myfile)) THEN
4892 WRITE (stdout,60) trim(ncname)
4893 RETURN
4894 END IF
4895
4896
4897
4899 & piofile = his(ng)%pioFile)
4900 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4901
4902
4903
4905 & piofile = his(ng)%pioFile)
4906 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
4907
4908
4909
4910 DO i=1,nv
4911 got_var(i)=.false.
4912 END DO
4913
4914
4915
4916
4917 DO i=1,n_var
4918 IF (trim(var_name(i)).eq.trim(vname(1,idtime))) THEN
4919 got_var(idtime)=.true.
4920 his(ng)%pioVar(idtime)%vd=
var_desc(i)
4921 his(ng)%pioVar(idtime)%dkind=
pio_tout
4922 his(ng)%pioVar(idtime)%gtype=0
4923# if defined WET_DRY
4924 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpwet))) THEN
4925 got_var(idpwet)=.true.
4926 his(ng)%pioVar(idpwet)%vd=
var_desc(i)
4927 his(ng)%pioVar(idpwet)%dkind=
pio_fout
4928 his(ng)%pioVar(idpwet)%gtype=p2dvar
4929 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrwet))) THEN
4930 got_var(idrwet)=.true.
4931 his(ng)%pioVar(idrwet)%vd=
var_desc(i)
4932 his(ng)%pioVar(idrwet)%dkind=
pio_fout
4933 his(ng)%pioVar(idrwet)%gtype=r2dvar
4934 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduwet))) THEN
4935 got_var(iduwet)=.true.
4936 his(ng)%pioVar(iduwet)%vd=
var_desc(i)
4937 his(ng)%pioVar(iduwet)%dkind=
pio_fout
4938 his(ng)%pioVar(iduwet)%gtype=u2dvar
4939 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvwet))) THEN
4940 got_var(idvwet)=.true.
4941 his(ng)%pioVar(idvwet)%vd=
var_desc(i)
4942 his(ng)%pioVar(idvwet)%dkind=
pio_fout
4943 his(ng)%pioVar(idvwet)%gtype=v2dvar
4944# endif
4945# ifdef SOLVE3D
4946 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthr))) THEN
4947 got_var(idpthr)=.true.
4948 his(ng)%pioVar(idpthr)%vd=
var_desc(i)
4949 his(ng)%pioVar(idpthr)%dkind=
pio_fout
4950 his(ng)%pioVar(idpthr)%gtype=r3dvar
4951 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthu))) THEN
4952 got_var(idpthu)=.true.
4953 his(ng)%pioVar(idpthu)%vd=
var_desc(i)
4954 his(ng)%pioVar(idpthu)%dkind=
pio_fout
4955 his(ng)%pioVar(idpthu)%gtype=u3dvar
4956 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthv))) THEN
4957 got_var(idpthv)=.true.
4958 his(ng)%pioVar(idpthv)%vd=
var_desc(i)
4959 his(ng)%pioVar(idpthv)%dkind=
pio_fout
4960 his(ng)%pioVar(idpthv)%gtype=v3dvar
4961 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpthw))) THEN
4962 got_var(idpthw)=.true.
4963 his(ng)%pioVar(idpthw)%vd=
var_desc(i)
4964 his(ng)%pioVar(idpthw)%dkind=
pio_fout
4965 his(ng)%pioVar(idpthw)%gtype=w3dvar
4966# endif
4967 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idfsur))) THEN
4968 got_var(idfsur)=.true.
4969 his(ng)%pioVar(idfsur)%vd=
var_desc(i)
4970 his(ng)%pioVar(idfsur)%dkind=
pio_fout
4971 his(ng)%pioVar(idfsur)%gtype=r2dvar
4972 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubar))) THEN
4973 got_var(idubar)=.true.
4974 his(ng)%pioVar(idubar)%vd=
var_desc(i)
4975 his(ng)%pioVar(idubar)%dkind=
pio_fout
4976 his(ng)%pioVar(idubar)%gtype=u2dvar
4977 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbar))) THEN
4978 got_var(idvbar)=.true.
4979 his(ng)%pioVar(idvbar)%vd=
var_desc(i)
4980 his(ng)%pioVar(idvbar)%dkind=
pio_fout
4981 his(ng)%pioVar(idvbar)%gtype=v2dvar
4982# ifdef ADJUST_BOUNDARY
4983 ELSE IF (trim(var_name(i)).eq. &
4984 & trim(vname(1,idsbry(isfsur)))) THEN
4985 got_var(idsbry(isfsur))=.true.
4986 his(ng)%pioVar(idsbry(isfsur))%vd=
var_desc(i)
4987 his(ng)%pioVar(idsbry(isfsur))%dkind=
pio_fout
4988 his(ng)%pioVar(idsbry(isfsur))%gtype=r2dobc
4989 ELSE IF (trim(var_name(i)).eq. &
4990 & trim(vname(1,idsbry(isubar)))) THEN
4991 got_var(idsbry(isubar))=.true.
4992 his(ng)%pioVar(idsbry(isubar))%vd=
var_desc(i)
4993 his(ng)%pioVar(idsbry(isubar))%dkind=
pio_fout
4994 his(ng)%pioVar(idsbry(isubar))%gtype=u2dobc
4995 ELSE IF (trim(var_name(i)).eq. &
4996 & trim(vname(1,idsbry(isvbar)))) THEN
4997 got_var(idsbry(isvbar))=.true.
4998 his(ng)%pioVar(idsbry(isvbar))%vd=
var_desc(i)
4999 his(ng)%pioVar(idsbry(isvbar))%dkind=
pio_fout
5000 his(ng)%pioVar(idsbry(isvbar))%gtype=v2dobc
5001# endif
5002 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu2de))) THEN
5003 got_var(idu2de)=.true.
5004 his(ng)%pioVar(idu2de)%vd=
var_desc(i)
5005 his(ng)%pioVar(idu2de)%dkind=
pio_fout
5006 his(ng)%pioVar(idu2de)%gtype=r2dvar
5007 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv2dn))) THEN
5008 got_var(idv2dn)=.true.
5009 his(ng)%pioVar(idv2dn)%vd=
var_desc(i)
5010 his(ng)%pioVar(idv2dn)%dkind=
pio_fout
5011 his(ng)%pioVar(idv2dn)%gtype=r2dvar
5012# ifdef FORWARD_WRITE
5013# ifdef FORWARD_RHS
5014 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrzet))) THEN
5015 got_var(idrzet)=.true.
5016 his(ng)%pioVar(idrzet)%vd=
var_desc(i)
5017 his(ng)%pioVar(idrzet)%dkind=
pio_fout
5018 his(ng)%pioVar(idrzet)%gtype=r2dvar
5019 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idru2d))) THEN
5020 got_var(idru2d)=.true.
5021 his(ng)%pioVar(idru2d)%vd=
var_desc(i)
5022 his(ng)%pioVar(idru2d)%dkind=
pio_fout
5023 his(ng)%pioVar(idru2d)%gtype=u2dvar
5024 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrv2d))) THEN
5025 got_var(idrv2d)=.true.
5026 his(ng)%pioVar(idrv2d)%vd=
var_desc(i)
5027 his(ng)%pioVar(idrv2d)%dkind=
pio_fout
5028 his(ng)%pioVar(idrv2d)%gtype=v2dvar
5029# endif
5030# ifdef SOLVE3D
5031# ifdef FORWARD_RHS
5032 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idruct))) THEN
5033 got_var(idruct)=.true.
5034 his(ng)%pioVar(idruct)%vd=
var_desc(i)
5035 his(ng)%pioVar(idruct)%dkind=
pio_fout
5036 his(ng)%pioVar(idruct)%gtype=u2dvar
5037 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrvct))) THEN
5038 got_var(idrvct)=.true.
5039 his(ng)%pioVar(idrvct)%vd=
var_desc(i)
5040 his(ng)%pioVar(idrvct)%dkind=
pio_fout
5041 his(ng)%pioVar(idrvct)%gtype=v2dvar
5042# endif
5043 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idufx1))) THEN
5044 got_var(idufx1)=.true.
5045 his(ng)%pioVar(idufx1)%vd=
var_desc(i)
5046 his(ng)%pioVar(idufx1)%dkind=
pio_fout
5047 his(ng)%pioVar(idufx1)%gtype=u2dvar
5048 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idufx2))) THEN
5049 got_var(idufx2)=.true.
5050 his(ng)%pioVar(idufx2)%vd=
var_desc(i)
5051 his(ng)%pioVar(idufx2)%dkind=
pio_fout
5052 his(ng)%pioVar(idufx2)%gtype=u2dvar
5053 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvfx1))) THEN
5054 got_var(idvfx1)=.true.
5055 his(ng)%pioVar(idvfx1)%vd=
var_desc(i)
5056 his(ng)%pioVar(idvfx1)%dkind=
pio_fout
5057 his(ng)%pioVar(idvfx1)%gtype=v2dvar
5058 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvfx2))) THEN
5059 got_var(idvfx2)=.true.
5060 his(ng)%pioVar(idvfx2)%vd=
var_desc(i)
5061 his(ng)%pioVar(idvfx2)%dkind=
pio_fout
5062 his(ng)%pioVar(idvfx2)%gtype=v2dvar
5063# ifdef FORWARD_RHS
5064 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idru3d))) THEN
5065 got_var(idru3d)=.true.
5066 his(ng)%pioVar(idru3d)%vd=
var_desc(i)
5067 his(ng)%pioVar(idru3d)%dkind=
pio_fout
5068 his(ng)%pioVar(idru3d)%gtype=u3dvar
5069 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrv3d))) THEN
5070 got_var(idrv3d)=.true.
5071 his(ng)%pioVar(idrv3d)%vd=
var_desc(i)
5072 his(ng)%pioVar(idrv3d)%dkind=
pio_fout
5073 his(ng)%pioVar(idrv3d)%gtype=v3dvar
5074# endif
5075# endif
5076# endif
5077# ifdef SOLVE3D
5078 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduvel))) THEN
5079 got_var(iduvel)=.true.
5080 his(ng)%pioVar(iduvel)%vd=
var_desc(i)
5081 his(ng)%pioVar(iduvel)%dkind=
pio_fout
5082 his(ng)%pioVar(iduvel)%gtype=u3dvar
5083 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvel))) THEN
5084 got_var(idvvel)=.true.
5085 his(ng)%pioVar(idvvel)%vd=
var_desc(i)
5086 his(ng)%pioVar(idvvel)%dkind=
pio_fout
5087 his(ng)%pioVar(idvvel)%gtype=v3dvar
5088# ifdef ADJUST_BOUNDARY
5089 ELSE IF (trim(var_name(i)).eq. &
5090 & trim(vname(1,idsbry(isuvel)))) THEN
5091 got_var(idsbry(isuvel))=.true.
5092 his(ng)%pioVar(idsbry(isuvel))%vd=
var_desc(i)
5093 his(ng)%pioVar(idsbry(isuvel))%dkind=
pio_fout
5094 his(ng)%pioVar(idsbry(isuvel))%gtype=u3dobc
5095 ELSE IF (trim(var_name(i)).eq. &
5096 & trim(vname(1,idsbry(isvvel)))) THEN
5097 got_var(idsbry(isvvel))=.true.
5098 his(ng)%pioVar(idsbry(isvvel))%vd=
var_desc(i)
5099 his(ng)%pioVar(idsbry(isvvel))%dkind=
pio_fout
5100 his(ng)%pioVar(idsbry(isvvel))%gtype=v3dobc
5101# endif
5102 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idu3de))) THEN
5103 got_var(idu3de)=.true.
5104 his(ng)%pioVar(idu3de)%vd=
var_desc(i)
5105 his(ng)%pioVar(idu3de)%dkind=
pio_fout
5106 his(ng)%pioVar(idu3de)%gtype=r3dvar
5107 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idv3dn))) THEN
5108 got_var(idv3dn)=.true.
5109 his(ng)%pioVar(idv3dn)%vd=
var_desc(i)
5110 his(ng)%pioVar(idv3dn)%dkind=
pio_fout
5111 his(ng)%pioVar(idv3dn)%gtype=r3dvar
5112 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idwvel))) THEN
5113 got_var(idwvel)=.true.
5114 his(ng)%pioVar(idwvel)%vd=
var_desc(i)
5115 his(ng)%pioVar(idwvel)%dkind=
pio_fout
5116 his(ng)%pioVar(idwvel)%gtype=w3dvar
5117 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idovel))) THEN
5118 got_var(idovel)=.true.
5119 his(ng)%pioVar(idovel)%vd=
var_desc(i)
5120 his(ng)%pioVar(idovel)%dkind=
pio_fout
5121 his(ng)%pioVar(idovel)%gtype=w3dvar
5122# ifdef OMEGA_IMPLICIT
5123 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idovil))) THEN
5124 got_var(idovil)=.true.
5125 his(ng)%pioVar(idovil)%vd=
var_desc(i)
5126 his(ng)%pioVar(idovil)%dkind=
pio_fout
5127 his(ng)%pioVar(idovil)%gtype=w3dvar
5128# endif
5129 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iddano))) THEN
5130 got_var(iddano)=.true.
5131 his(ng)%pioVar(iddano)%vd=
var_desc(i)
5132 his(ng)%pioVar(iddano)%dkind=
pio_fout
5133 his(ng)%pioVar(iddano)%gtype=r3dvar
5134# ifdef LMD_SKPP
5135 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhsbl))) THEN
5136 got_var(idhsbl)=.true.
5137 his(ng)%pioVar(idhsbl)%vd=
var_desc(i)
5138 his(ng)%pioVar(idhsbl)%dkind=
pio_fout
5139 his(ng)%pioVar(idhsbl)%gtype=r2dvar
5140# endif
5141# ifdef LMD_BKPP
5142 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idhbbl))) THEN
5143 got_var(idhbbl)=.true.
5144 his(ng)%pioVar(idhbbl)%vd=
var_desc(i)
5145 his(ng)%pioVar(idhbbl)%dkind=
pio_fout
5146 his(ng)%pioVar(idhbbl)%gtype=r2dvar
5147# endif
5148 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvvis))) THEN
5149 got_var(idvvis)=.true.
5150 his(ng)%pioVar(idvvis)%vd=
var_desc(i)
5151 his(ng)%pioVar(idvvis)%dkind=
pio_fout
5152 his(ng)%pioVar(idvvis)%gtype=w3dvar
5153 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtdif))) THEN
5154 got_var(idtdif)=.true.
5155 his(ng)%pioVar(idtdif)%vd=
var_desc(i)
5156 his(ng)%pioVar(idtdif)%dkind=
pio_fout
5157 his(ng)%pioVar(idtdif)%gtype=w3dvar
5158 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsdif))) THEN
5159 got_var(idsdif)=.true.
5160 his(ng)%pioVar(idsdif)%vd=
var_desc(i)
5161 his(ng)%pioVar(idsdif)%dkind=
pio_fout
5162 his(ng)%pioVar(idsdif)%gtype=w3dvar
5163# if defined GLS_MIXING || defined MY25_MIXING
5164 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtke))) THEN
5165 got_var(idmtke)=.true.
5166 his(ng)%pioVar(idmtke)%vd=
var_desc(i)
5167 his(ng)%pioVar(idmtke)%dkind=
pio_fout
5168 his(ng)%pioVar(idmtke)%gtype=w3dvar
5169 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idmtls))) THEN
5170 got_var(idmtls)=.true.
5171 his(ng)%pioVar(idmtls)%vd=
var_desc(i)
5172 his(ng)%pioVar(idmtls)%dkind=
pio_fout
5173 his(ng)%pioVar(idmtls)%gtype=w3dvar
5174# endif
5175# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
5176 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idpair))) THEN
5177 got_var(idpair)=.true.
5178 his(ng)%pioVar(idpair)%vd=
var_desc(i)
5179 his(ng)%pioVar(idpair)%dkind=
pio_fout
5180 his(ng)%pioVar(idpair)%gtype=r2dvar
5181# endif
5182# if defined BULK_FLUXES || defined ECOSIM
5183 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduair))) THEN
5184 got_var(iduair)=.true.
5185 his(ng)%pioVar(iduair)%vd=
var_desc(i)
5186 his(ng)%pioVar(iduair)%dkind=
pio_fout
5187 his(ng)%pioVar(iduair)%gtype=r2dvar
5188 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvair))) THEN
5189 got_var(idvair)=.true.
5190 his(ng)%pioVar(idvair)%vd=
var_desc(i)
5191 his(ng)%pioVar(idvair)%dkind=
pio_fout
5192 his(ng)%pioVar(idvair)%gtype=r2dvar
5193 ELSE IF (trim(var_name(i)).eq.trim(vname(1,iduaie))) THEN
5194 got_var(iduair)=.true.
5195 his(ng)%pioVar(iduaie)%vd=
var_desc(i)
5196 his(ng)%pioVar(iduaie)%dkind=
pio_fout
5197 his(ng)%pioVar(iduaie)%gtype=r2dvar
5198 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvain))) THEN
5199 got_var(idvair)=.true.
5200 his(ng)%pioVar(idvain)%vd=
var_desc(i)
5201 his(ng)%pioVar(idvain)%dkind=
pio_fout
5202 his(ng)%pioVar(idvain)%gtype=r2dvar
5203# endif
5204# if defined BULK_FLUXES || defined FRC_COUPLING
5205 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlhea))) THEN
5206 got_var(idlhea)=.true.
5207 his(ng)%pioVar(idlhea)%vd=
var_desc(i)
5208 his(ng)%pioVar(idlhea)%dkind=
pio_fout
5209 his(ng)%pioVar(idlhea)%gtype=r2dvar
5210 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idshea))) THEN
5211 got_var(idshea)=.true.
5212 his(ng)%pioVar(idshea)%vd=
var_desc(i)
5213 his(ng)%pioVar(idshea)%dkind=
pio_fout
5214 his(ng)%pioVar(idshea)%gtype=r2dvar
5215 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idlrad))) THEN
5216 got_var(idlrad)=.true.
5217 his(ng)%pioVar(idlrad)%vd=
var_desc(i)
5218 his(ng)%pioVar(idlrad)%dkind=
pio_fout
5219 his(ng)%pioVar(idlrad)%gtype=r2dvar
5220# endif
5221# ifdef BULK_FLUXES
5222 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idtair))) THEN
5223 got_var(idtair)=.true.
5224 his(ng)%pioVar(idtair)%vd=
var_desc(i)
5225 his(ng)%pioVar(idtair)%dkind=
pio_fout
5226 his(ng)%pioVar(idtair)%gtype=r2dvar
5227# ifdef EMINUSP
5228 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idevap))) THEN
5229 got_var(idevap)=.true.
5230 his(ng)%pioVar(idevap)%vd=
var_desc(i)
5231 his(ng)%pioVar(idevap)%dkind=
pio_fout
5232 his(ng)%pioVar(idevap)%gtype=r2dvar
5233 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idrain))) THEN
5234 got_var(idrain)=.true.
5235 his(ng)%pioVar(idrain)%vd=
var_desc(i)
5236 his(ng)%pioVar(idrain)%dkind=
pio_fout
5237 his(ng)%pioVar(idrain)%gtype=r2dvar
5238# endif
5239# endif
5240 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idempf))) THEN
5241 got_var(idempf)=.true.
5242 his(ng)%pioVar(idempf)%vd=
var_desc(i)
5243 his(ng)%pioVar(idempf)%dkind=
pio_fout
5244 his(ng)%pioVar(idempf)%gtype=r2dvar
5245# ifdef SHORTWAVE
5246 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idsrad))) THEN
5247 got_var(idsrad)=.true.
5248 his(ng)%pioVar(idsrad)%vd=
var_desc(i)
5249 his(ng)%pioVar(idsrad)%dkind=
pio_fout
5250 his(ng)%pioVar(idsrad)%gtype=r2dvar
5251# endif
5252# endif
5253 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idusms))) THEN
5254 got_var(idusms)=.true.
5255 his(ng)%pioVar(idusms)%vd=
var_desc(i)
5256 his(ng)%pioVar(idusms)%dkind=
pio_fout
5257 his(ng)%pioVar(idusms)%gtype=u2dvar
5258 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvsms))) THEN
5259 got_var(idvsms)=.true.
5260 his(ng)%pioVar(idvsms)%vd=
var_desc(i)
5261 his(ng)%pioVar(idvsms)%dkind=
pio_fout
5262 his(ng)%pioVar(idvsms)%gtype=v2dvar
5263 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idubms))) THEN
5264 got_var(idubms)=.true.
5265 his(ng)%pioVar(idubms)%vd=
var_desc(i)
5266 his(ng)%pioVar(idubms)%dkind=
pio_fout
5267 his(ng)%pioVar(idubms)%gtype=u2dvar
5268 ELSE IF (trim(var_name(i)).eq.trim(vname(1,idvbms))) THEN
5269 got_var(idvbms)=.true.
5270 his(ng)%pioVar(idvbms)%vd=
var_desc(i)
5271 his(ng)%pioVar(idvbms)%dkind=
pio_fout
5272 his(ng)%pioVar(idvbms)%gtype=v2dvar
5273 END IF
5274# ifdef SOLVE3D
5275 DO itrc=1,nt(ng)
5276 IF (trim(var_name(i)).eq.trim(vname(1,idtvar(itrc)))) THEN
5277 got_var(idtvar(itrc))=.true.
5278 his(ng)%pioTrc(itrc)%vd=
var_desc(i)
5279 his(ng)%pioTrc(itrc)%dkind=
pio_fout
5280 his(ng)%pioTrc(itrc)%gtype=r3dvar
5281# ifdef ADJUST_BOUNDARY
5282 ELSE IF (trim(var_name(i)).eq. &
5283 & trim(vname(1,idsbry(istvar(itrc))))) THEN
5284 got_var(idsbry(istvar(itrc)))=.true.
5285 his(ng)%pioVar(idsbry(istvar(itrc)))%vd=
var_desc(i)
5286 his(ng)%pioVar(idsbry(istvar(itrc)))%dkind=
pio_fout
5287 his(ng)%pioVar(idsbry(istvar(itrc)))%gtype=r3dobc
5288# endif
5289 END IF
5290 END DO
5291 DO itrc=1,nat
5292 IF (trim(var_name(i)).eq.trim(vname(1,idtsur(itrc)))) THEN
5293 got_var(idtsur(itrc))=.true.
5294 his(ng)%pioVar(idtsur(itrc))%vd=
var_desc(i)
5295 his(ng)%pioVar(idtsur(itrc))%dkind=
pio_fout
5296 his(ng)%pioVar(idtsur(itrc))%gtype=r2dvar
5297# if defined FORWARD_WRITE && defined LMD_NONLOCAL
5298 ELSE IF (trim(var_name(i)).eq. &
5299 & trim(vname(1,idghat(itrc)))) THEN
5300 got_var(idghat(itrc))=.true.
5301 his(ng)%pioVar(idghat(itrc))%vd=
var_desc(i)
5302 his(ng)%pioVar(idghat(itrc))%dkind=
pio_fout
5303 his(ng)%pioVar(idghat(itrc))%gtype=w3dvar
5304# endif
5305 END IF
5306 END DO
5307# endif
5308 END DO
5309
5310
5311
5312 IF (.not.got_var(idtime)) THEN
5313 IF (master) WRITE (stdout,70) trim(vname(1,idtime)), &
5314 & trim(ncname)
5315 exit_flag=3
5316 RETURN
5317 END IF
5318# if defined WET_DRY
5319 IF (.not.got_var(idpwet)) THEN
5320 IF (master) WRITE (stdout,70) trim(vname(1,idpwet)), &
5321 & trim(ncname)
5322 exit_flag=3
5323 RETURN
5324 END IF
5325 IF (.not.got_var(idrwet)) THEN
5326 IF (master) WRITE (stdout,70) trim(vname(1,idrwet)), &
5327 & trim(ncname)
5328 exit_flag=3
5329 RETURN
5330 END IF
5331 IF (.not.got_var(iduwet)) THEN
5332 IF (master) WRITE (stdout,70) trim(vname(1,iduwet)), &
5333 & trim(ncname)
5334 exit_flag=3
5335 RETURN
5336 END IF
5337 IF (.not.got_var(idvwet)) THEN
5338 IF (master) WRITE (stdout,70) trim(vname(1,idvwet)), &
5339 & trim(ncname)
5340 exit_flag=3
5341 RETURN
5342 END IF
5343# endif
5344# ifdef SOLVE3D
5345 IF (.not.got_var(idpthr).and.hout(idpthr,ng)) THEN
5346 IF (master) WRITE (stdout,70) trim(vname(1,idpthr)), &
5347 & trim(ncname)
5348 exit_flag=3
5349 RETURN
5350 END IF
5351 IF (.not.got_var(idpthu).and.hout(idpthu,ng)) THEN
5352 IF (master) WRITE (stdout,70) trim(vname(1,idpthu)), &
5353 & trim(ncname)
5354 exit_flag=3
5355 RETURN
5356 END IF
5357 IF (.not.got_var(idpthv).and.hout(idpthv,ng)) THEN
5358 IF (master) WRITE (stdout,70) trim(vname(1,idpthv)), &
5359 & trim(ncname)
5360 exit_flag=3
5361 RETURN
5362 END IF
5363 IF (.not.got_var(idpthw).and.hout(idpthw,ng)) THEN
5364 IF (master) WRITE (stdout,70) trim(vname(1,idpthw)), &
5365 & trim(ncname)
5366 exit_flag=3
5367 RETURN
5368 END IF
5369# endif
5370 IF (.not.got_var(idfsur).and.hout(idfsur,ng)) THEN
5371 IF (master) WRITE (stdout,70) trim(vname(1,idfsur)), &
5372 & trim(ncname)
5373 exit_flag=3
5374 RETURN
5375 END IF
5376 IF (.not.got_var(idubar).and.hout(idubar,ng)) THEN
5377 IF (master) WRITE (stdout,70) trim(vname(1,idubar)), &
5378 & trim(ncname)
5379 exit_flag=3
5380 RETURN
5381 END IF
5382 IF (.not.got_var(idvbar).and.hout(idvbar,ng)) THEN
5383 IF (master) WRITE (stdout,70) trim(vname(1,idvbar)), &
5384 & trim(ncname)
5385 exit_flag=3
5386 RETURN
5387 END IF
5388# ifdef ADJUST_BOUNDARY
5389 IF (.not.got_var(idsbry(isfsur))) THEN
5390 IF (master) WRITE (stdout,70) trim(vname(1,idsbry(isfsur))), &
5391 & trim(ncname)
5392 exit_flag=3
5393 RETURN
5394 END IF
5395 IF (.not.got_var(idsbry(isubar))) THEN
5396 IF (master) WRITE (stdout,70) trim(vname(1,idsbry(isubar))), &
5397 & trim(ncname)
5398 exit_flag=3
5399 RETURN
5400 END IF
5401 IF (.not.got_var(idsbry(isvbar))) THEN
5402 IF (master) WRITE (stdout,70) trim(vname(1,idsbry(isvbar))), &
5403 & trim(ncname)
5404 exit_flag=3
5405 RETURN
5406 END IF
5407# endif
5408 IF (.not.got_var(idu2de).and.hout(idu2de,ng)) THEN
5409 IF (master) WRITE (stdout,70) trim(vname(1,idu2de)), &
5410 & trim(ncname)
5411 exit_flag=3
5412 RETURN
5413 END IF
5414 IF (.not.got_var(idv2dn).and.hout(idv2dn,ng)) THEN
5415 IF (master) WRITE (stdout,70) trim(vname(1,idv2dn)), &
5416 & trim(ncname)
5417 exit_flag=3
5418 RETURN
5419 END IF
5420# ifdef FORWARD_WRITE
5421# ifdef FORWARD_RHS
5422 IF (.not.got_var(idrzet).and.hout(idrzet,ng)) THEN
5423 IF (master) WRITE (stdout,70) trim(vname(1,idrzet)), &
5424 & trim(ncname)
5425 exit_flag=3
5426 RETURN
5427 END IF
5428 IF (.not.got_var(idru2d).and.hout(idru2d,ng)) THEN
5429 IF (master) WRITE (stdout,70) trim(vname(1,idru2d)), &
5430 & trim(ncname)
5431 exit_flag=3
5432 RETURN
5433 END IF
5434 IF (.not.got_var(idrv2d).and.hout(idrv2d,ng)) THEN
5435 IF (master) WRITE (stdout,70) trim(vname(1,idrv2d)), &
5436 & trim(ncname)
5437 exit_flag=3
5438 RETURN
5439 END IF
5440# endif
5441# ifdef SOLVE3D
5442# ifdef FORWARD_RHS
5443 IF (.not.got_var(idruct).and.hout(idruct,ng)) THEN
5444 IF (master) WRITE (stdout,70) trim(vname(1,idruct)), &
5445 & trim(ncname)
5446 exit_flag=3
5447 RETURN
5448 END IF
5449 IF (.not.got_var(idrcvt).and.hout(idrcvt,ng)) THEN
5450 IF (master) WRITE (stdout,70) trim(vname(1,idrcvt)), &
5451 & trim(ncname)
5452 exit_flag=3
5453 RETURN
5454 END IF
5455# endif
5456 IF (.not.got_var(idufx1).and.hout(idufx1,ng)) THEN
5457 IF (master) WRITE (stdout,70) trim(vname(1,idufx1)), &
5458 & trim(ncname)
5459 exit_flag=3
5460 RETURN
5461 END IF
5462 IF (.not.got_var(idufx2).and.hout(idufx2,ng)) THEN
5463 IF (master) WRITE (stdout,70) trim(vname(1,idufx2)), &
5464 & trim(ncname)
5465 exit_flag=3
5466 RETURN
5467 END IF
5468 IF (.not.got_var(idvfx1).and.hout(idvfx1,ng)) THEN
5469 IF (master) WRITE (stdout,70) trim(vname(1,idvfx1)), &
5470 & trim(ncname)
5471 exit_flag=3
5472 RETURN
5473 END IF
5474 IF (.not.got_var(idvfx2).and.hout(idvfx2,ng)) THEN
5475 IF (master) WRITE (stdout,70) trim(vname(1,idvfx2)), &
5476 & trim(ncname)
5477 exit_flag=3
5478 RETURN
5479 END IF
5480# ifdef FORWARD_RHS
5481 IF (.not.got_var(idru3d).and.hout(idru3d,ng)) THEN
5482 IF (master) WRITE (stdout,70) trim(vname(1,idru3d)), &
5483 & trim(ncname)
5484 exit_flag=3
5485 RETURN
5486 END IF
5487 IF (.not.got_var(idrv3d).and.hout(idrv3d,ng)) THEN
5488 IF (master) WRITE (stdout,70) trim(vname(1,idrv3d)), &
5489 & trim(ncname)
5490 exit_flag=3
5491 RETURN
5492 END IF
5493# endif
5494# endif
5495# endif
5496# ifdef SOLVE3D
5497 IF (.not.got_var(iduvel).and.hout(iduvel,ng)) THEN
5498 IF (master) WRITE (stdout,70) trim(vname(1,iduvel)), &
5499 & trim(ncname)
5500 exit_flag=3
5501 RETURN
5502 END IF
5503 IF (.not.got_var(idvvel).and.hout(idvvel,ng)) THEN
5504 IF (master) WRITE (stdout,70) trim(vname(1,idvvel)), &
5505 & trim(ncname)
5506 exit_flag=3
5507 RETURN
5508 END IF
5509# ifdef ADJUST_BOUNDARY
5510 IF (.not.got_var(idsbry(isuvel))) THEN
5511 IF (master) WRITE (stdout,70) trim(vname(1,idsbry(isuvel))), &
5512 & trim(ncname)
5513 exit_flag=3
5514 RETURN
5515 END IF
5516 IF (.not.got_var(idsbry(isvvel))) THEN
5517 IF (master) WRITE (stdout,70) trim(vname(1,idsbry(isvvel))), &
5518 & trim(ncname)
5519 exit_flag=3
5520 RETURN
5521 END IF
5522# endif
5523 IF (.not.got_var(idu3de).and.hout(idu3de,ng)) THEN
5524 IF (master) WRITE (stdout,70) trim(vname(1,idu3de)), &
5525 & trim(ncname)
5526 exit_flag=3
5527 RETURN
5528 END IF
5529 IF (.not.got_var(idv3dn).and.hout(idv3dn,ng)) THEN
5530 IF (master) WRITE (stdout,70) trim(vname(1,idv3dn)), &
5531 & trim(ncname)
5532 exit_flag=3
5533 RETURN
5534 END IF
5535 IF (.not.got_var(idwvel).and.hout(idwvel,ng)) THEN
5536 IF (master) WRITE (stdout,70) trim(vname(1,idwvel)), &
5537 & trim(ncname)
5538 exit_flag=3
5539 RETURN
5540 END IF
5541 IF (.not.got_var(idovel).and.hout(idovel,ng)) THEN
5542 IF (master) WRITE (stdout,70) trim(vname(1,idovel)), &
5543 & trim(ncname)
5544 exit_flag=3
5545 RETURN
5546 END IF
5547# ifdef OMEGA_IMPLICIT
5548 IF (.not.got_var(idovil).and.hout(idovil,ng)) THEN
5549 IF (master) WRITE (stdout,70) trim(vname(1,idovil)), &
5550 & trim(ncname)
5551 exit_flag=3
5552 RETURN
5553 END IF
5554# endif
5555 IF (.not.got_var(iddano).and.hout(iddano,ng)) THEN
5556 IF (master) WRITE (stdout,70) trim(vname(1,iddano)), &
5557 & trim(ncname)
5558 exit_flag=3
5559 RETURN
5560 END IF
5561# ifdef LMD_SKPP
5562 IF (.not.got_var(idhsbl).and.hout(idhsbl,ng)) THEN
5563 IF (master) WRITE (stdout,70) trim(vname(1,idhsbl)), &
5564 & trim(ncname)
5565 exit_flag=3
5566 RETURN
5567 END IF
5568# endif
5569# ifdef LMD_BKPP
5570 IF (.not.got_var(idhbbl).and.hout(idhbbl,ng)) THEN
5571 IF (master) WRITE (stdout,70) trim(vname(1,idhbbl)), &
5572 & trim(ncname)
5573 exit_flag=3
5574 RETURN
5575 END IF
5576# endif
5577 IF (.not.got_var(idvvis).and.hout(idvvis,ng)) THEN
5578 IF (master) WRITE (stdout,70) trim(vname(1,idvvis)), &
5579 & trim(ncname)
5580 exit_flag=3
5581 RETURN
5582 END IF
5583 IF (.not.got_var(idtdif).and.hout(idtdif,ng)) THEN
5584 IF (master) WRITE (stdout,70) trim(vname(1,idtdif)), &
5585 & trim(ncname)
5586 exit_flag=3
5587 RETURN
5588 END IF
5589# ifdef SALINITY
5590 IF (.not.got_var(idsdif).and.hout(idsdif,ng)) THEN
5591 IF (master) WRITE (stdout,70) trim(vname(1,idsdif)), &
5592 & trim(ncname)
5593 exit_flag=3
5594 RETURN
5595 END IF
5596# endif
5597# if defined GLS_MIXING || defined MY25_MIXING
5598 IF (.not.got_var(idmtke).and.hout(idmtke,ng)) THEN
5599 IF (master) WRITE (stdout,70) trim(vname(1,idmtke)), &
5600 & trim(ncname)
5601 exit_flag=3
5602 RETURN
5603 END IF
5604 IF (.not.got_var(idmtls).and.hout(idmtls,ng)) THEN
5605 IF (master) WRITE (stdout,70) trim(vname(1,idmtls)), &
5606 & trim(ncname)
5607 exit_flag=3
5608 RETURN
5609 END IF
5610# endif
5611# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
5612 IF (.not.got_var(idpair).and.hout(idpair,ng)) THEN
5613 IF (master) WRITE (stdout,70) trim(vname(1,idpair)), &
5614 & trim(ncname)
5615 exit_flag=3
5616 RETURN
5617 END IF
5618# endif
5619# if defined BULK_FLUXES || defined ECOSIM
5620 IF (.not.got_var(iduair).and.hout(iduair,ng)) THEN
5621 IF (master) WRITE (stdout,70) trim(vname(1,iduair)), &
5622 & trim(ncname)
5623 exit_flag=3
5624 RETURN
5625 END IF
5626 IF (.not.got_var(idvair).and.hout(idvair,ng)) THEN
5627 IF (master) WRITE (stdout,70) trim(vname(1,idvair)), &
5628 & trim(ncname)
5629 exit_flag=3
5630 RETURN
5631 END IF
5632 IF (.not.got_var(iduaie).and.hout(iduaie,ng)) THEN
5633 IF (master) WRITE (stdout,70) trim(vname(1,iduaie)), &
5634 & trim(ncname)
5635 exit_flag=3
5636 RETURN
5637 END IF
5638 IF (.not.got_var(idvain).and.hout(idvain,ng)) THEN
5639 IF (master) WRITE (stdout,70) trim(vname(1,idvain)), &
5640 & trim(ncname)
5641 exit_flag=3
5642 RETURN
5643 END IF
5644# endif
5645# if defined BULK_FLUXES || defined FRC_COUPLING
5646 IF (.not.got_var(idlhea).and.hout(idlhea,ng)) THEN
5647 IF (master) WRITE (stdout,70) trim(vname(1,idlhea)), &
5648 & trim(ncname)
5649 exit_flag=3
5650 RETURN
5651 END IF
5652 IF (.not.got_var(idshea).and.hout(idshea,ng)) THEN
5653 IF (master) WRITE (stdout,70) trim(vname(1,idshea)), &
5654 & trim(ncname)
5655 exit_flag=3
5656 RETURN
5657 END IF
5658 IF (.not.got_var(idlrad).and.hout(idlrad,ng)) THEN
5659 IF (master) WRITE (stdout,70) trim(vname(1,idlrad)), &
5660 & trim(ncname)
5661 exit_flag=3
5662 RETURN
5663 END IF
5664# endif
5665# ifdef BULK_FLUXES
5666 IF (.not.got_var(idtair).and.hout(idtair,ng)) THEN
5667 IF (master) WRITE (stdout,70) trim(vname(1,idtair)), &
5668 & trim(ncname)
5669 exit_flag=3
5670 RETURN
5671 END IF
5672# ifdef EMINUSP
5673 IF (.not.got_var(idevap).and.hout(idevap,ng)) THEN
5674 IF (master) WRITE (stdout,70) trim(vname(1,idevap)), &
5675 & trim(ncname)
5676 exit_flag=3
5677 RETURN
5678 END IF
5679 IF (.not.got_var(idrain).and.hout(idrain,ng)) THEN
5680 IF (master) WRITE (stdout,70) trim(vname(1,idrain)), &
5681 & trim(ncname)
5682 exit_flag=3
5683 RETURN
5684 END IF
5685# endif
5686# endif
5687 IF (.not.got_var(idempf).and.hout(idempf,ng)) THEN
5688 IF (master) WRITE (stdout,70) trim(vname(1,idempf)), &
5689 & trim(ncname)
5690 exit_flag=3
5691 RETURN
5692 END IF
5693# ifdef SHORTWAVE
5694 IF (.not.got_var(idsrad).and.hout(idsrad,ng)) THEN
5695 IF (master) WRITE (stdout,70) trim(vname(1,idsrad)), &
5696 & trim(ncname)
5697 exit_flag=3
5698 RETURN
5699 END IF
5700# endif
5701# endif
5702 IF (.not.got_var(idusms).and.hout(idusms,ng)) THEN
5703 IF (master) WRITE (stdout,70) trim(vname(1,idusms)), &
5704 & trim(ncname)
5705 exit_flag=3
5706 RETURN
5707 END IF
5708 IF (.not.got_var(idvsms).and.hout(idvsms,ng)) THEN
5709 IF (master) WRITE (stdout,70) trim(vname(1,idvsms)), &
5710 & trim(ncname)
5711 exit_flag=3
5712 RETURN
5713 END IF
5714 IF (.not.got_var(idubms).and.hout(idubms,ng)) THEN
5715 IF (master) WRITE (stdout,70) trim(vname(1,idubms)), &
5716 & trim(ncname)
5717 exit_flag=3
5718 RETURN
5719 END IF
5720 IF (.not.got_var(idvbms).and.hout(idvbms,ng)) THEN
5721 IF (master) WRITE (stdout,70) trim(vname(1,idvbms)), &
5722 & trim(ncname)
5723 exit_flag=3
5724 RETURN
5725 END IF
5726# ifdef SOLVE3D
5727 DO itrc=1,nt(ng)
5728 IF (.not.got_var(idtvar(itrc)).and.hout(idtvar(itrc),ng)) THEN
5729 IF (master) WRITE (stdout,70) trim(vname(1,idtvar(itrc))), &
5730 & trim(ncname)
5731 exit_flag=3
5732 RETURN
5733 END IF
5734# ifdef ADJUST_BOUNDARY
5735 IF (.not.got_var(idsbry(istvar(itrc)))) THEN
5736 IF (master) WRITE (stdout,70) &
5737 & trim(vname(1,idsbry(istvar(itrc)))), &
5738 & trim(ncname)
5739 exit_flag=3
5740 RETURN
5741 END IF
5742# endif
5743 END DO
5744 DO itrc=1,nat
5745 IF (.not.got_var(idtsur(itrc)).and.hout(idtsur(itrc),ng)) THEN
5746 IF (master) WRITE (stdout,70) trim(vname(1,idtsur(itrc))), &
5747 & trim(ncname)
5748 exit_flag=3
5749 RETURN
5750 END IF
5751# if defined FORWARD_WRITE && defined LMD_NONLOCAL
5752 IF (.not.got_var(idghat(itrc)).and.hout(idghat(itrc),ng)) THEN
5753 IF (master) WRITE (stdout,70) trim(vname(1,idghat(itrc))), &
5754 & trim(ncname)
5755 exit_flag=3
5756 RETURN
5757 END IF
5758# endif
5759 END DO
5760# endif
5761
5762# if (defined BBL_MODEL || defined WAVES_OUTPUT) && defined SOLVE3D
5763
5764
5765
5766
5767 CALL bbl_def_pio (ng, model, ldef, hout, his)
5768 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
5769# endif
5770
5771# if defined ICE_MODEL && defined SOLVE3D
5772
5773
5774
5775
5776 CALL ice_def_pio (ng, model, ldef, hout, his)
5777 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
5778# endif
5779
5780# if defined SEDIMENT && defined SOLVE3D
5781
5782
5783
5784
5785 CALL sediment_def_pio (ng, model, ldef, hout, his)
5786 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
5787# endif
5788
5789# if defined WEC || defined WEC_VF
5790
5791
5792
5793
5794 CALL wec_def_pio (ng, model, ldef, hout, his)
5795 IF (founderror(exit_flag, noerror, __line__, myfile)) RETURN
5796# endif
5797
5798
5799
5800 IF (ndefhis(ng).gt.0) THEN
5801 his(ng)%Rindex=((ntstart(ng)-1)- &
5802 & ndefhis(ng)*((ntstart(ng)-1)/ndefhis(ng)))/ &
5803 & nhis(ng)
5804 ELSE
5805 his(ng)%Rindex=(ntstart(ng)-1)/nhis(ng)
5806 END IF
5807 his(ng)%Rindex=min(his(ng)%Rindex,rec_size)
5808 END IF query
5809
5810 10 FORMAT (2x,'DEF_HIS_PIO - creating history file,',t56, &
5811 & 'Grid ',i2.2,': ',a)
5812 20 FORMAT (2x,'DEF_HIS_PIO - inquiring history file,',t56, &
5813 & 'Grid ',i2.2,': ',a)
5814 30 FORMAT (/,' DEF_HIS_PIO - unable to create history NetCDF', &
5815 & ' file: ',a)
5816 40 FORMAT ('time dependent',1x,a)
5817 50 FORMAT (1pe11.4,1x,'millimeter')
5818 60 FORMAT (/,' DEF_HIS_PIO - unable to open history NetCDF file: ',a)
5819 70 FORMAT (/,' DEF_HIS_PIO - unable to find variable: ',a,2x, &
5820 & ' in history NetCDF file: ',a)
5821
5822 RETURN
integer, parameter pio_type
integer, parameter pio_fout
type(var_desc_t), dimension(:), pointer var_desc
subroutine, public pio_netcdf_create(ng, model, ncname, piofile)
subroutine, public pio_netcdf_inq_var(ng, model, ncname, piofile, myvarname, searchvar, piovar, nvardim, nvaratt)
subroutine, public pio_netcdf_open(ng, model, ncname, omode, piofile)
subroutine, public pio_netcdf_check_dim(ng, model, ncname, piofile)
integer, parameter pio_tout
subroutine, public pio_netcdf_enddef(ng, model, ncname, piofile)