Ignore:
Timestamp:
Oct 15, 2014, 2:03:57 AM (10 years ago)
Author:
fhourdin
Message:

Introduction du cas Dice couplé atmosphere/surface
+ nouveau paramètre de contrôle f_ri_cd_min, seuil minimum
sur la fonction f(Ri) en facteur du coefficient de traîné neutre.
Par défaut : f_ri_cd_min=0.1 (comme avant)

Introduction of the coupled atmosphere/surface dice case.
+ new parameter f_ri_cd_min, minimum threshold on the f(Ri) fonction
that multiply the neutral drag coefficient.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/1DUTILS.h

    r2117 r2126  
    140140       CALL getin('ok_flux_surf',ok_flux_surf)
    141141
     142!Config  Key  = ok_prescr_ust
     143!Config  Desc = ustar impose ou non
     144!Config  Def  = false
     145!Config  Help = ustar impose ou non
     146       ok_prescr_ust = .false.
     147       CALL getin('ok_prescr_ust',ok_prescr_ust)
     148
    142149!Config  Key  = ok_old_disvert
    143150!Config  Desc = utilisation de l ancien programme disvert0 (dans 1DUTILS.h)
     
    24132420          end
    24142421 
     2422!=====================================================================
     2423       SUBROUTINE interp_dice_vertical(play,nlev_dice,nt_dice,plev_prof   &
     2424     &         ,th_prof,qv_prof,u_prof,v_prof,o3_prof                     &
     2425     &         ,ht_prof,hq_prof,hu_prof,hv_prof,w_prof,omega_prof         &
     2426     &         ,th_mod,qv_mod,u_mod,v_mod,o3_mod                          &
     2427     &         ,ht_mod,hq_mod,hu_mod,hv_mod,w_mod,omega_mod,mxcalc)
     2428 
     2429       implicit none
     2430 
     2431#include "dimensions.h"
     2432
     2433!-------------------------------------------------------------------------
     2434! Vertical interpolation of Dice forcing data onto model levels
     2435!-------------------------------------------------------------------------
     2436 
     2437       integer nlevmax
     2438       parameter (nlevmax=41)
     2439       integer nlev_dice,mxcalc,nt_dice
     2440 
     2441       real play(llm), plev_prof(nlev_dice)
     2442       real th_prof(nlev_dice),qv_prof(nlev_dice)
     2443       real u_prof(nlev_dice),v_prof(nlev_dice)
     2444       real o3_prof(nlev_dice)
     2445       real ht_prof(nlev_dice),hq_prof(nlev_dice)
     2446       real hu_prof(nlev_dice),hv_prof(nlev_dice)
     2447       real w_prof(nlev_dice),omega_prof(nlev_dice)
     2448 
     2449       real th_mod(llm),qv_mod(llm)
     2450       real u_mod(llm),v_mod(llm), o3_mod(llm)
     2451       real ht_mod(llm),hq_mod(llm)
     2452       real hu_mod(llm),hv_mod(llm),w_mod(llm),omega_mod(llm)
     2453 
     2454       integer l,k,k1,k2,kp
     2455       real aa,frac,frac1,frac2,fact
     2456 
     2457       do l = 1, llm
     2458
     2459        if (play(l).ge.plev_prof(nlev_dice)) then
     2460 
     2461        mxcalc=l
     2462         k1=0
     2463         k2=0
     2464
     2465         if (play(l).le.plev_prof(1)) then
     2466
     2467         do k = 1, nlev_dice-1
     2468          if (play(l).le.plev_prof(k) .and. play(l).gt.plev_prof(k+1)) then
     2469            k1=k
     2470            k2=k+1
     2471          endif
     2472         enddo
     2473
     2474         if (k1.eq.0 .or. k2.eq.0) then
     2475          write(*,*) 'PB! k1, k2 = ',k1,k2
     2476          write(*,*) 'l,play(l) = ',l,play(l)/100
     2477         do k = 1, nlev_dice-1
     2478          write(*,*) 'k,plev_prof(k) = ',k,plev_prof(k)/100
     2479         enddo
     2480         endif
     2481
     2482         frac = (plev_prof(k2)-play(l))/(plev_prof(k2)-plev_prof(k1))
     2483         th_mod(l)= th_prof(k2) - frac*(th_prof(k2)-th_prof(k1))
     2484         qv_mod(l)= qv_prof(k2) - frac*(qv_prof(k2)-qv_prof(k1))
     2485         u_mod(l)= u_prof(k2) - frac*(u_prof(k2)-u_prof(k1))
     2486         v_mod(l)= v_prof(k2) - frac*(v_prof(k2)-v_prof(k1))
     2487         o3_mod(l)= o3_prof(k2) - frac*(o3_prof(k2)-o3_prof(k1))
     2488         ht_mod(l)= ht_prof(k2) - frac*(ht_prof(k2)-ht_prof(k1))
     2489         hq_mod(l)= hq_prof(k2) - frac*(hq_prof(k2)-hq_prof(k1))
     2490         hu_mod(l)= hu_prof(k2) - frac*(hu_prof(k2)-hu_prof(k1))
     2491         hv_mod(l)= hv_prof(k2) - frac*(hv_prof(k2)-hv_prof(k1))
     2492         w_mod(l)= w_prof(k2) - frac*(w_prof(k2)-w_prof(k1))
     2493         omega_mod(l)= omega_prof(k2) - frac*(omega_prof(k2)-omega_prof(k1))
     2494     
     2495         else !play>plev_prof(1)
     2496
     2497         k1=1
     2498         k2=2
     2499         frac1 = (play(l)-plev_prof(k2))/(plev_prof(k1)-plev_prof(k2))
     2500         frac2 = (play(l)-plev_prof(k1))/(plev_prof(k1)-plev_prof(k2))
     2501         th_mod(l)= frac1*th_prof(k1) - frac2*th_prof(k2)
     2502         qv_mod(l)= frac1*qv_prof(k1) - frac2*qv_prof(k2)
     2503         u_mod(l)= frac1*u_prof(k1) - frac2*u_prof(k2)
     2504         v_mod(l)= frac1*v_prof(k1) - frac2*v_prof(k2)
     2505         o3_mod(l)= frac1*o3_prof(k1) - frac2*o3_prof(k2)
     2506         ht_mod(l)= frac1*ht_prof(k1) - frac2*ht_prof(k2)
     2507         hq_mod(l)= frac1*hq_prof(k1) - frac2*hq_prof(k2)
     2508         hu_mod(l)= frac1*hu_prof(k1) - frac2*hu_prof(k2)
     2509         hv_mod(l)= frac1*hv_prof(k1) - frac2*hv_prof(k2)
     2510         w_mod(l)= frac1*w_prof(k1) - frac2*w_prof(k2)
     2511         omega_mod(l)= frac1*omega_prof(k1) - frac2*omega_prof(k2)
     2512
     2513         endif ! play.le.plev_prof(1)
     2514
     2515        else ! above max altitude of forcing file
     2516 
     2517!jyg
     2518         fact=20.*(plev_prof(nlev_dice)-play(l))/plev_prof(nlev_dice) !jyg
     2519         fact = max(fact,0.)                                           !jyg
     2520         fact = exp(-fact)                                             !jyg
     2521         th_mod(l)= th_prof(nlev_dice)                                 !jyg
     2522         qv_mod(l)= qv_prof(nlev_dice)*fact                            !jyg
     2523         u_mod(l)= u_prof(nlev_dice)*fact                              !jyg
     2524         v_mod(l)= v_prof(nlev_dice)*fact                              !jyg
     2525         o3_mod(l)= o3_prof(nlev_dice)*fact                            !jyg
     2526         ht_mod(l)= ht_prof(nlev_dice)                                 !jyg
     2527         hq_mod(l)= hq_prof(nlev_dice)*fact                            !jyg
     2528         hu_mod(l)= hu_prof(nlev_dice)                                 !jyg
     2529         hv_mod(l)= hv_prof(nlev_dice)                                 !jyg
     2530         w_mod(l)= 0.                                                  !jyg
     2531         omega_mod(l)= 0.                                              !jyg
     2532 
     2533        endif ! play
     2534 
     2535       enddo ! l
     2536
     2537!       do l = 1,llm
     2538!       print *,'t_mod(l),q_mod(l),ht_mod(l),hq_mod(l) ',
     2539!     $        l,t_mod(l),q_mod(l),ht_mod(l),hq_mod(l)
     2540!       enddo
     2541 
     2542          return
     2543          end
     2544
    24152545!======================================================================
    24162546        SUBROUTINE interp_astex_time(day,day1,annee_ref                    &
     
    26452775
    26462776!======================================================================
     2777        SUBROUTINE interp_dice_time(day,day1,annee_ref                    &
     2778     &             ,year_ini_dice,day_ini_dice,nt_dice,dt_dice            &
     2779     &             ,nlev_dice,shf_dice,lhf_dice,lwup_dice,swup_dice       &
     2780     &             ,tg_dice,ustar_dice,psurf_dice,ug_dice,vg_dice         &
     2781     &             ,ht_dice,hq_dice,hu_dice,hv_dice,w_dice,omega_dice     &
     2782     &             ,shf_prof,lhf_prof,lwup_prof,swup_prof,tg_prof         &
     2783     &             ,ustar_prof,psurf_prof,ug_prof,vg_prof                 &
     2784     &             ,ht_prof,hq_prof,hu_prof,hv_prof,w_prof,omega_prof)
     2785        implicit none
     2786
     2787!---------------------------------------------------------------------------------------
     2788! Time interpolation of a 2D field to the timestep corresponding to day
     2789!
     2790! day: current julian day (e.g. 717538.2)
     2791! day1: first day of the simulation
     2792! nt_dice: total nb of data in the forcing (e.g. 145 for Dice)
     2793! dt_dice: total time interval (in sec) between 2 forcing data (e.g. 30min. for Dice)
     2794!---------------------------------------------------------------------------------------
     2795
     2796#include "compar1d.h"
     2797
     2798! inputs:
     2799        integer annee_ref
     2800        integer nt_dice,nlev_dice
     2801        integer year_ini_dice
     2802        real day, day1,day_ini_dice,dt_dice
     2803        real shf_dice(nt_dice),lhf_dice(nt_dice),lwup_dice(nt_dice)
     2804        real swup_dice(nt_dice),tg_dice(nt_dice),ustar_dice(nt_dice)
     2805        real psurf_dice(nt_dice),ug_dice(nt_dice),vg_dice(nt_dice)
     2806        real ht_dice(nlev_dice,nt_dice),hq_dice(nlev_dice,nt_dice)
     2807        real hu_dice(nlev_dice,nt_dice),hv_dice(nlev_dice,nt_dice)
     2808        real w_dice(nlev_dice,nt_dice),omega_dice(nlev_dice,nt_dice)
     2809! outputs:
     2810        real tg_prof,shf_prof,lhf_prof,lwup_prof,swup_prof
     2811        real ustar_prof,psurf_prof,ug_prof,vg_prof
     2812        real ht_prof(nlev_dice),hq_prof(nlev_dice)
     2813        real hu_prof(nlev_dice),hv_prof(nlev_dice)
     2814        real w_prof(nlev_dice),omega_prof(nlev_dice)
     2815! local:
     2816        integer it_dice1, it_dice2,k
     2817        real timeit,time_dice1,time_dice2,frac
     2818
     2819
     2820        if (forcing_type.eq.7) then
     2821! Check that initial day of the simulation consistent with Dice period:
     2822       print *,'annee_ref=',annee_ref
     2823       print *,'day1=',day1
     2824       print *,'day_ini_dice=',day_ini_dice
     2825       if (annee_ref.ne.1999) then
     2826        print*,'Pour Dice, annee_ref doit etre 1999'
     2827        print*,'Changer annee_ref dans run.def'
     2828        stop
     2829       endif
     2830       if (annee_ref.eq.1999 .and. day1.gt.day_ini_dice) then
     2831        print*,'Dice a debute le 23 Oct 1999 (jour julien=296)'
     2832        print*,'Changer dayref dans run.def',day1,day_ini_dice
     2833        stop
     2834       endif
     2835       if (annee_ref.eq.1999 .and. day1.gt.day_ini_dice+2) then
     2836        print*,'Dice a fini le 25 Oct 1999 (jour julien=298)'
     2837        print*,'Changer dayref ou nday dans run.def',day1,day_ini_dice
     2838        stop
     2839       endif
     2840
     2841       endif
     2842
     2843! Determine timestep relative to the 1st day of TOGA-COARE:
     2844!       timeit=(day-day1)*86400.
     2845!       if (annee_ref.eq.1992) then
     2846!        timeit=(day-day_ini_dice)*86400.
     2847!       else
     2848!        timeit=(day+61.-1.)*86400. ! 61 days between Nov01 and Dec31 1992
     2849!       endif
     2850      timeit=(day-day_ini_dice)*86400
     2851
     2852! Determine the closest observation times:
     2853       it_dice1=INT(timeit/dt_dice)+1
     2854       it_dice2=it_dice1 + 1
     2855       time_dice1=(it_dice1-1)*dt_dice
     2856       time_dice2=(it_dice2-1)*dt_dice
     2857
     2858       if (it_dice1 .ge. nt_dice) then
     2859        write(*,*) 'PB-stop: day, it_dice1, it_dice2, timeit: ',day,it_dice1,it_dice2,timeit/86400.
     2860        stop
     2861       endif
     2862
     2863! time interpolation:
     2864       frac=(time_dice2-timeit)/(time_dice2-time_dice1)
     2865       frac=max(frac,0.0)
     2866
     2867       shf_prof = shf_dice(it_dice2)-frac*(shf_dice(it_dice2)-shf_dice(it_dice1))
     2868       lhf_prof = lhf_dice(it_dice2)-frac*(lhf_dice(it_dice2)-lhf_dice(it_dice1))
     2869       lwup_prof = lwup_dice(it_dice2)-frac*(lwup_dice(it_dice2)-lwup_dice(it_dice1))
     2870       swup_prof = swup_dice(it_dice2)-frac*(swup_dice(it_dice2)-swup_dice(it_dice1))
     2871       tg_prof = tg_dice(it_dice2)-frac*(tg_dice(it_dice2)-tg_dice(it_dice1))
     2872       ustar_prof = ustar_dice(it_dice2)-frac*(ustar_dice(it_dice2)-ustar_dice(it_dice1))
     2873       psurf_prof = psurf_dice(it_dice2)-frac*(psurf_dice(it_dice2)-psurf_dice(it_dice1))
     2874       ug_prof = ug_dice(it_dice2)-frac*(ug_dice(it_dice2)-ug_dice(it_dice1))
     2875       vg_prof = vg_dice(it_dice2)-frac*(vg_dice(it_dice2)-vg_dice(it_dice1))
     2876
     2877!        print*,
     2878!     :'day,annee_ref,day_ini_dice,timeit,it_dice1,it_dice2,SST:',
     2879!     :day,annee_ref,day_ini_dice,timeit/86400.,it_dice1,it_dice2,ts_prof
     2880
     2881       do k=1,nlev_dice
     2882        ht_prof(k) = ht_dice(k,it_dice2)-frac*(ht_dice(k,it_dice2)-ht_dice(k,it_dice1))
     2883        hq_prof(k) = hq_dice(k,it_dice2)-frac*(hq_dice(k,it_dice2)-hq_dice(k,it_dice1))
     2884        hu_prof(k) = hu_dice(k,it_dice2)-frac*(hu_dice(k,it_dice2)-hu_dice(k,it_dice1))
     2885        hv_prof(k) = hv_dice(k,it_dice2)-frac*(hv_dice(k,it_dice2)-hv_dice(k,it_dice1))
     2886        w_prof(k) = w_dice(k,it_dice2)-frac*(w_dice(k,it_dice2)-w_dice(k,it_dice1))
     2887        omega_prof(k) = omega_dice(k,it_dice2)-frac*(omega_dice(k,it_dice2)-omega_dice(k,it_dice1))
     2888        enddo
     2889
     2890        return
     2891        END
     2892
     2893!======================================================================
    26472894        SUBROUTINE interp_armcu_time(day,day1,annee_ref                    &
    26482895     &             ,year_ini_armcu,day_ini_armcu,nt_armcu,dt_armcu         &
     
    31723419         return
    31733420         end subroutine read_fire
     3421!=====================================================================
     3422      subroutine read_dice(fich_dice,nlevel,ntime                         &
     3423     &     ,zz,pres,th,qv,u,v,o3                                          &
     3424     &     ,shf,lhf,lwup,swup,tg,ustar,psurf,ug,vg                        &
     3425     &     ,hadvt,hadvq,hadvu,hadvv,w,omega)
     3426
     3427!program reading initial profils and forcings of the Dice case study
     3428
     3429
     3430      implicit none
     3431
     3432#include "netcdf.inc"
     3433
     3434      integer ntime,nlevel
     3435      integer l,k
     3436      character*80 :: fich_dice
     3437      real*8 time(ntime)
     3438      real*8 zz(nlevel)
     3439
     3440      real*8 th(nlevel),pres(nlevel)
     3441      real*8 qv(nlevel),u(nlevel),v(nlevel),o3(nlevel)
     3442      real*8 shf(ntime),lhf(ntime),lwup(ntime),swup(ntime),tg(ntime)
     3443      real*8 ustar(ntime),psurf(ntime),ug(ntime),vg(ntime)
     3444      real*8 hadvt(nlevel,ntime),hadvq(nlevel,ntime),hadvu(nlevel,ntime)
     3445      real*8 hadvv(nlevel,ntime),w(nlevel,ntime),omega(nlevel,ntime)
     3446
     3447      integer nid, ierr
     3448      integer nbvar3d
     3449      parameter(nbvar3d=30)
     3450      integer var3didin(nbvar3d)
     3451
     3452      ierr = NF_OPEN(fich_dice,NF_NOWRITE,nid)
     3453      if (ierr.NE.NF_NOERR) then
     3454         write(*,*) 'ERROR: Pb opening forcings nc file '
     3455         write(*,*) NF_STRERROR(ierr)
     3456         stop ""
     3457      endif
     3458
     3459
     3460       ierr=NF_INQ_VARID(nid,"height",var3didin(1))
     3461         if(ierr/=NF_NOERR) then
     3462           write(*,*) NF_STRERROR(ierr)
     3463           stop 'height'
     3464         endif
     3465
     3466       ierr=NF_INQ_VARID(nid,"pf",var3didin(11))
     3467         if(ierr/=NF_NOERR) then
     3468           write(*,*) NF_STRERROR(ierr)
     3469           stop 'pf'
     3470         endif
     3471
     3472      ierr=NF_INQ_VARID(nid,"theta",var3didin(12))
     3473         if(ierr/=NF_NOERR) then
     3474           write(*,*) NF_STRERROR(ierr)
     3475           stop 'theta'
     3476         endif
     3477
     3478      ierr=NF_INQ_VARID(nid,"qv",var3didin(13))
     3479         if(ierr/=NF_NOERR) then
     3480           write(*,*) NF_STRERROR(ierr)
     3481           stop 'qv'
     3482         endif
     3483
     3484      ierr=NF_INQ_VARID(nid,"u",var3didin(14))
     3485         if(ierr/=NF_NOERR) then
     3486           write(*,*) NF_STRERROR(ierr)
     3487           stop 'u'
     3488         endif
     3489
     3490      ierr=NF_INQ_VARID(nid,"v",var3didin(15))
     3491         if(ierr/=NF_NOERR) then
     3492           write(*,*) NF_STRERROR(ierr)
     3493           stop 'v'
     3494         endif
     3495
     3496      ierr=NF_INQ_VARID(nid,"o3mmr",var3didin(16))
     3497         if(ierr/=NF_NOERR) then
     3498           write(*,*) NF_STRERROR(ierr)
     3499           stop 'o3'
     3500         endif
     3501
     3502      ierr=NF_INQ_VARID(nid,"shf",var3didin(2))
     3503         if(ierr/=NF_NOERR) then
     3504           write(*,*) NF_STRERROR(ierr)
     3505           stop 'shf'
     3506         endif
     3507
     3508      ierr=NF_INQ_VARID(nid,"lhf",var3didin(3))
     3509         if(ierr/=NF_NOERR) then
     3510           write(*,*) NF_STRERROR(ierr)
     3511           stop 'lhf'
     3512         endif
     3513     
     3514      ierr=NF_INQ_VARID(nid,"lwup",var3didin(4))
     3515         if(ierr/=NF_NOERR) then
     3516           write(*,*) NF_STRERROR(ierr)
     3517           stop 'lwup'
     3518         endif
     3519
     3520      ierr=NF_INQ_VARID(nid,"swup",var3didin(5))
     3521         if(ierr/=NF_NOERR) then
     3522           write(*,*) NF_STRERROR(ierr)
     3523           stop 'dqtdx'
     3524         endif
     3525
     3526      ierr=NF_INQ_VARID(nid,"Tg",var3didin(6))
     3527         if(ierr/=NF_NOERR) then
     3528           write(*,*) NF_STRERROR(ierr)
     3529           stop 'Tg'
     3530      endif
     3531
     3532      ierr=NF_INQ_VARID(nid,"ustar",var3didin(7))
     3533         if(ierr/=NF_NOERR) then
     3534           write(*,*) NF_STRERROR(ierr)
     3535           stop 'ustar'
     3536      endif
     3537
     3538      ierr=NF_INQ_VARID(nid,"psurf",var3didin(8))
     3539         if(ierr/=NF_NOERR) then
     3540           write(*,*) NF_STRERROR(ierr)
     3541           stop 'psurf'
     3542      endif
     3543
     3544      ierr=NF_INQ_VARID(nid,"Ug",var3didin(9))
     3545         if(ierr/=NF_NOERR) then
     3546           write(*,*) NF_STRERROR(ierr)
     3547           stop 'Ug'
     3548      endif
     3549
     3550      ierr=NF_INQ_VARID(nid,"Vg",var3didin(10))
     3551         if(ierr/=NF_NOERR) then
     3552           write(*,*) NF_STRERROR(ierr)
     3553           stop 'Vg'
     3554      endif
     3555
     3556      ierr=NF_INQ_VARID(nid,"hadvT",var3didin(17))
     3557         if(ierr/=NF_NOERR) then
     3558           write(*,*) NF_STRERROR(ierr)
     3559           stop 'hadvT'
     3560      endif
     3561
     3562      ierr=NF_INQ_VARID(nid,"hadvq",var3didin(18))
     3563         if(ierr/=NF_NOERR) then
     3564           write(*,*) NF_STRERROR(ierr)
     3565           stop 'hadvq'
     3566      endif
     3567
     3568      ierr=NF_INQ_VARID(nid,"hadvu",var3didin(19))
     3569         if(ierr/=NF_NOERR) then
     3570           write(*,*) NF_STRERROR(ierr)
     3571           stop 'hadvu'
     3572      endif
     3573
     3574      ierr=NF_INQ_VARID(nid,"hadvv",var3didin(20))
     3575         if(ierr/=NF_NOERR) then
     3576           write(*,*) NF_STRERROR(ierr)
     3577           stop 'hadvv'
     3578      endif
     3579
     3580      ierr=NF_INQ_VARID(nid,"w",var3didin(21))
     3581         if(ierr/=NF_NOERR) then
     3582           write(*,*) NF_STRERROR(ierr)
     3583           stop 'w'
     3584      endif
     3585
     3586      ierr=NF_INQ_VARID(nid,"omega",var3didin(22))
     3587         if(ierr/=NF_NOERR) then
     3588           write(*,*) NF_STRERROR(ierr)
     3589           stop 'omega'
     3590      endif
     3591!dimensions lecture
     3592!      call catchaxis(nid,ntime,nlevel,time,z,ierr)
     3593 
     3594#ifdef NC_DOUBLE
     3595         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(1),zz)
     3596#else
     3597         ierr = NF_GET_VAR_REAL(nid,var3didin(1),zz)
     3598#endif
     3599         if(ierr/=NF_NOERR) then
     3600            write(*,*) NF_STRERROR(ierr)
     3601            stop "getvarup"
     3602         endif
     3603!          write(*,*)'lecture zz ok',zz
     3604 
     3605#ifdef NC_DOUBLE
     3606         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(11),pres)
     3607#else
     3608         ierr = NF_GET_VAR_REAL(nid,var3didin(11),pres)
     3609#endif
     3610         if(ierr/=NF_NOERR) then
     3611            write(*,*) NF_STRERROR(ierr)
     3612            stop "getvarup"
     3613         endif
     3614!          write(*,*)'lecture pres ok',pres
     3615
     3616#ifdef NC_DOUBLE
     3617         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(12),th)
     3618#else
     3619         ierr = NF_GET_VAR_REAL(nid,var3didin(12),th)
     3620#endif
     3621         if(ierr/=NF_NOERR) then
     3622            write(*,*) NF_STRERROR(ierr)
     3623            stop "getvarup"
     3624         endif
     3625!          write(*,*)'lecture th ok',th
     3626
     3627#ifdef NC_DOUBLE
     3628         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(13),qv)
     3629#else
     3630         ierr = NF_GET_VAR_REAL(nid,var3didin(13),qv)
     3631#endif
     3632         if(ierr/=NF_NOERR) then
     3633            write(*,*) NF_STRERROR(ierr)
     3634            stop "getvarup"
     3635         endif
     3636!          write(*,*)'lecture qv ok',qv
     3637 
     3638#ifdef NC_DOUBLE
     3639         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(14),u)
     3640#else
     3641         ierr = NF_GET_VAR_REAL(nid,var3didin(14),u)
     3642#endif
     3643         if(ierr/=NF_NOERR) then
     3644            write(*,*) NF_STRERROR(ierr)
     3645            stop "getvarup"
     3646         endif
     3647!          write(*,*)'lecture u ok',u
     3648
     3649#ifdef NC_DOUBLE
     3650         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(15),v)
     3651#else
     3652         ierr = NF_GET_VAR_REAL(nid,var3didin(15),v)
     3653#endif
     3654         if(ierr/=NF_NOERR) then
     3655            write(*,*) NF_STRERROR(ierr)
     3656            stop "getvarup"
     3657         endif
     3658!          write(*,*)'lecture v ok',v
     3659
     3660#ifdef NC_DOUBLE
     3661         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(16),o3)
     3662#else
     3663         ierr = NF_GET_VAR_REAL(nid,var3didin(16),o3)
     3664#endif
     3665         if(ierr/=NF_NOERR) then
     3666            write(*,*) NF_STRERROR(ierr)
     3667            stop "getvarup"
     3668         endif
     3669!          write(*,*)'lecture o3 ok',o3
     3670
     3671#ifdef NC_DOUBLE
     3672         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(2),shf)
     3673#else
     3674         ierr = NF_GET_VAR_REAL(nid,var3didin(2),shf)
     3675#endif
     3676         if(ierr/=NF_NOERR) then
     3677            write(*,*) NF_STRERROR(ierr)
     3678            stop "getvarup"
     3679         endif
     3680!          write(*,*)'lecture shf ok',shf
     3681
     3682#ifdef NC_DOUBLE
     3683         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(3),lhf)
     3684#else
     3685         ierr = NF_GET_VAR_REAL(nid,var3didin(3),lhf)
     3686#endif
     3687         if(ierr/=NF_NOERR) then
     3688            write(*,*) NF_STRERROR(ierr)
     3689            stop "getvarup"
     3690         endif
     3691!          write(*,*)'lecture lhf ok',lhf
     3692
     3693#ifdef NC_DOUBLE
     3694         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(4),lwup)
     3695#else
     3696         ierr = NF_GET_VAR_REAL(nid,var3didin(4),lwup)
     3697#endif
     3698         if(ierr/=NF_NOERR) then
     3699            write(*,*) NF_STRERROR(ierr)
     3700            stop "getvarup"
     3701         endif
     3702!          write(*,*)'lecture lwup ok',lwup
     3703
     3704#ifdef NC_DOUBLE
     3705         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(5),swup)
     3706#else
     3707         ierr = NF_GET_VAR_REAL(nid,var3didin(5),swup)
     3708#endif
     3709         if(ierr/=NF_NOERR) then
     3710            write(*,*) NF_STRERROR(ierr)
     3711            stop "getvarup"
     3712         endif
     3713!          write(*,*)'lecture swup ok',swup
     3714
     3715#ifdef NC_DOUBLE
     3716         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(6),tg)
     3717#else
     3718         ierr = NF_GET_VAR_REAL(nid,var3didin(6),tg)
     3719#endif
     3720         if(ierr/=NF_NOERR) then
     3721            write(*,*) NF_STRERROR(ierr)
     3722            stop "getvarup"
     3723         endif
     3724!          write(*,*)'lecture tg ok',tg
     3725
     3726#ifdef NC_DOUBLE
     3727         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(7),ustar)
     3728#else
     3729         ierr = NF_GET_VAR_REAL(nid,var3didin(7),ustar)
     3730#endif
     3731         if(ierr/=NF_NOERR) then
     3732            write(*,*) NF_STRERROR(ierr)
     3733            stop "getvarup"
     3734         endif
     3735!          write(*,*)'lecture ustar ok',ustar
     3736
     3737#ifdef NC_DOUBLE
     3738         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(8),psurf)
     3739#else
     3740         ierr = NF_GET_VAR_REAL(nid,var3didin(8),psurf)
     3741#endif
     3742         if(ierr/=NF_NOERR) then
     3743            write(*,*) NF_STRERROR(ierr)
     3744            stop "getvarup"
     3745         endif
     3746!          write(*,*)'lecture psurf ok',psurf
     3747
     3748#ifdef NC_DOUBLE
     3749         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(9),ug)
     3750#else
     3751         ierr = NF_GET_VAR_REAL(nid,var3didin(9),ug)
     3752#endif
     3753         if(ierr/=NF_NOERR) then
     3754            write(*,*) NF_STRERROR(ierr)
     3755            stop "getvarup"
     3756         endif
     3757!          write(*,*)'lecture ug ok',ug
     3758
     3759#ifdef NC_DOUBLE
     3760         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(10),vg)
     3761#else
     3762         ierr = NF_GET_VAR_REAL(nid,var3didin(10),vg)
     3763#endif
     3764         if(ierr/=NF_NOERR) then
     3765            write(*,*) NF_STRERROR(ierr)
     3766            stop "getvarup"
     3767         endif
     3768!          write(*,*)'lecture vg ok',vg
     3769
     3770#ifdef NC_DOUBLE
     3771         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(17),hadvt)
     3772#else
     3773         ierr = NF_GET_VAR_REAL(nid,var3didin(17),hadvt)
     3774#endif
     3775         if(ierr/=NF_NOERR) then
     3776            write(*,*) NF_STRERROR(ierr)
     3777            stop "getvarup"
     3778         endif
     3779!          write(*,*)'lecture hadvt ok',hadvt
     3780
     3781#ifdef NC_DOUBLE
     3782         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(18),hadvq)
     3783#else
     3784         ierr = NF_GET_VAR_REAL(nid,var3didin(18),hadvq)
     3785#endif
     3786         if(ierr/=NF_NOERR) then
     3787            write(*,*) NF_STRERROR(ierr)
     3788            stop "getvarup"
     3789         endif
     3790!          write(*,*)'lecture hadvq ok',hadvq
     3791
     3792#ifdef NC_DOUBLE
     3793         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(19),hadvu)
     3794#else
     3795         ierr = NF_GET_VAR_REAL(nid,var3didin(19),hadvu)
     3796#endif
     3797         if(ierr/=NF_NOERR) then
     3798            write(*,*) NF_STRERROR(ierr)
     3799            stop "getvarup"
     3800         endif
     3801!          write(*,*)'lecture hadvu ok',hadvu
     3802
     3803#ifdef NC_DOUBLE
     3804         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(20),hadvv)
     3805#else
     3806         ierr = NF_GET_VAR_REAL(nid,var3didin(20),hadvv)
     3807#endif
     3808         if(ierr/=NF_NOERR) then
     3809            write(*,*) NF_STRERROR(ierr)
     3810            stop "getvarup"
     3811         endif
     3812!          write(*,*)'lecture hadvv ok',hadvv
     3813
     3814#ifdef NC_DOUBLE
     3815         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(21),w)
     3816#else
     3817         ierr = NF_GET_VAR_REAL(nid,var3didin(21),w)
     3818#endif
     3819         if(ierr/=NF_NOERR) then
     3820            write(*,*) NF_STRERROR(ierr)
     3821            stop "getvarup"
     3822         endif
     3823!          write(*,*)'lecture w ok',w
     3824
     3825#ifdef NC_DOUBLE
     3826         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(22),omega)
     3827#else
     3828         ierr = NF_GET_VAR_REAL(nid,var3didin(22),omega)
     3829#endif
     3830         if(ierr/=NF_NOERR) then
     3831            write(*,*) NF_STRERROR(ierr)
     3832            stop "getvarup"
     3833         endif
     3834!          write(*,*)'lecture omega ok',omega
     3835
     3836         return
     3837         end subroutine read_dice
    31743838!=====================================================================
    31753839!     Reads CIRC input files     
Note: See TracChangeset for help on using the changeset viewer.