Ignore:
Timestamp:
Oct 22, 2024, 11:35:08 AM (8 weeks ago)
Author:
abarral
Message:

Replace uses of cpp key NC_DOUBLE

Location:
LMDZ6/trunk/libf/dyn3dmem
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3dmem/dynredem_mod.F90

    r5084 r5249  
    170170!
    171171SUBROUTINE cre_var(ncid,var,title,did,units)
    172 !
    173 !===============================================================================
     172  USE lmdz_cppkeys_wrapper, ONLY: nf90_format
    174173  IMPLICIT NONE
    175174!===============================================================================
     
    180179  CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units
    181180!===============================================================================
    182 #ifdef NC_DOUBLE
    183   CALL err(NF90_DEF_VAR(ncid,var,NF90_DOUBLE,did,nvarid),"inq",var)
    184 #else
    185   CALL err(NF90_DEF_VAR(ncid,var,NF90_FLOAT ,did,nvarid),"inq",var)
    186 #endif
     181  CALL err(NF90_DEF_VAR(ncid,var,nf90_format ,did,nvarid),"inq",var)
    187182  IF(title/="")      CALL err(NF90_PUT_ATT(ncid,nvarid,"title",title),var)
    188183  IF(PRESENT(units)) CALL err(NF90_PUT_ATT(ncid,nvarid,"units",units),var)
  • LMDZ6/trunk/libf/dyn3dmem/guide_loc_mod.F90

    r5084 r5249  
    1919
    2020! ---------------------------------------------
    21 ! Declarations des cles logiques et parametres 
     21! Declarations des cles logiques et parametres
    2222! ---------------------------------------------
    2323  INTEGER, PRIVATE, SAVE  :: iguide_read,iguide_int,iguide_sav
    2424  INTEGER, PRIVATE, SAVE  :: nlevnc, guide_plevs
    2525  LOGICAL, PRIVATE, SAVE  :: guide_u,guide_v,guide_T,guide_Q,guide_P
    26   LOGICAL, PRIVATE, SAVE  :: guide_hr,guide_teta 
    27   LOGICAL, PRIVATE, SAVE  :: guide_BL,guide_reg,guide_add,gamma4,guide_zon 
     26  LOGICAL, PRIVATE, SAVE  :: guide_hr,guide_teta
     27  LOGICAL, PRIVATE, SAVE  :: guide_BL,guide_reg,guide_add,gamma4,guide_zon
    2828  LOGICAL, PRIVATE, SAVE  :: invert_p,invert_y,ini_anal
    2929  LOGICAL, PRIVATE, SAVE  :: guide_2D,guide_sav,guide_modele
    3030!FC
    3131  LOGICAL, PRIVATE, SAVE  :: convert_Pa
    32  
     32
    3333  REAL, PRIVATE, SAVE     :: tau_min_u,tau_max_u
    3434  REAL, PRIVATE, SAVE     :: tau_min_v,tau_max_v
     
    4343  REAL, PRIVATE, SAVE     :: plim_guide_BL
    4444
    45   REAL, ALLOCATABLE, DIMENSION(:), PRIVATE, SAVE     :: alpha_u,alpha_v 
    46   REAL, ALLOCATABLE, DIMENSION(:), PRIVATE, SAVE     :: alpha_T,alpha_Q 
     45  REAL, ALLOCATABLE, DIMENSION(:), PRIVATE, SAVE     :: alpha_u,alpha_v
     46  REAL, ALLOCATABLE, DIMENSION(:), PRIVATE, SAVE     :: alpha_T,alpha_Q
    4747  REAL, ALLOCATABLE, DIMENSION(:), PRIVATE, SAVE     :: alpha_P,alpha_pcor
    48  
     48
    4949! ---------------------------------------------
    5050! Variables de guidage
     
    6464  REAL, ALLOCATABLE, DIMENSION(:,:),   PRIVATE, SAVE   :: qgui1,qgui2
    6565  REAL, ALLOCATABLE, DIMENSION(:),   PRIVATE, SAVE   :: psgui1,psgui2
    66  
     66
    6767  INTEGER,SAVE,PRIVATE :: ijbu,ijbv,ijeu,ijev !,ijnu,ijnv
    6868  INTEGER,SAVE,PRIVATE :: jjbu,jjbv,jjeu,jjev,jjnu,jjnv
     
    7878
    7979    IMPLICIT NONE
    80  
     80
    8181    INCLUDE "dimensions.h"
    8282    INCLUDE "paramet.h"
     
    8989
    9090! ---------------------------------------------
    91 ! Lecture des parametres: 
     91! Lecture des parametres:
    9292! ---------------------------------------------
    9393    call ini_getparam("nudging_parameters_out.txt")
     
    168168
    169169    call fin_getparam
    170    
     170
    171171! ---------------------------------------------
    172172! Determination du nombre de niveaux verticaux
     
    198198             CALL abort_gcm(modname,abort_message,1)
    199199          endif
    200          
     200
    201201       endif
    202202
     
    211211       endif
    212212
    213    
     213
    214214    elseif (guide_T) then
    215215       if (ncidpl.eq.-99) then
     
    233233
    234234
    235     endif 
     235    endif
    236236    error=NF_INQ_DIMID(ncidpl,'LEVEL',rid)
    237237    IF (error.NE.NF_NOERR) error=NF_INQ_DIMID(ncidpl,'PRESSURE',rid)
     
    268268    IF (error /= 0) CALL abort_gcm(modname,abort_message,1)
    269269    alpha_u=0.;alpha_v=0;alpha_T=0;alpha_Q=0;alpha_P=0
    270    
     270
    271271    IF (guide_u) THEN
    272272        ALLOCATE(unat1(iip1,jjb_u:jje_u,nlevnc), stat = error)
     
    292292        tnat1=0.;tnat2=0.;tgui1=0.;tgui2=0.
    293293    ENDIF
    294      
     294
    295295    IF (guide_Q) THEN
    296296        ALLOCATE(qnat1(iip1,jjb_u:jje_u,nlevnc), stat = error)
     
    366366    USE comconst_mod, ONLY: cpp, daysec, dtvr, kappa
    367367    USE comvert_mod, ONLY: ap, bp, preff, presnivs, pressure_exner
    368    
     368
    369369    IMPLICIT NONE
    370  
     370
    371371    INCLUDE "dimensions.h"
    372372    INCLUDE "paramet.h"
     
    386386    ! Variables pour fonction Exner (P milieu couche)
    387387    REAL, ALLOCATABLE, SAVE, DIMENSION (:,:,:)    :: pk
    388     REAL, ALLOCATABLE, SAVE, DIMENSION (:,:)        :: pks   
     388    REAL, ALLOCATABLE, SAVE, DIMENSION (:,:)        :: pks
    389389    REAL                               :: unskap
    390390    REAL, ALLOCATABLE, SAVE, DIMENSION (:,:)    :: p ! besoin si guide_P
     
    396396    REAL, SAVE    :: factt ! pas de temps en fraction de jour
    397397!$OMP THREADPRIVATE(factt)
    398    
     398
    399399    INTEGER       :: i,j,l
    400400    CHARACTER(LEN=20) :: modname="guide_main"
    401        
    402 !$OMP MASTER   
     401
     402!$OMP MASTER
    403403    ijbu=ij_begin ; ijeu=ij_end
    404     jjbu=jj_begin ; jjeu=jj_end ; jjnu=jjeu-jjbu+1 
     404    jjbu=jj_begin ; jjeu=jj_end ; jjnu=jjeu-jjbu+1
    405405    ijbv=ij_begin ; ijev=ij_end
    406     jjbv=jj_begin ; jjev=jj_end ; jjnv=jjev-jjbv+1 
     406    jjbv=jj_begin ; jjev=jj_end ; jjnv=jjev-jjbv+1
    407407    IF (pole_sud) THEN
    408408      ijeu=ij_end-iip1
    409409      ijev=ij_end-iip1
    410410      jjev=jj_end-1
    411       jjnv=jjev-jjbv+1 
     411      jjnv=jjev-jjbv+1
    412412    ENDIF
    413413    IF (pole_nord) THEN
     
    417417!$OMP END MASTER
    418418!$OMP BARRIER
    419      
     419
    420420!    PRINT *,'---> on rentre dans guide_main'
    421421!    CALL AllGather_Field(ucov,ip1jmp1,llm)
     
    424424!    CALL AllGather_Field(ps,ip1jmp1,1)
    425425!    CALL AllGather_Field(q,ip1jmp1,llm)
    426    
     426
    427427!-----------------------------------------------------------------------
    428428! Initialisations au premier passage
     
    432432        first=.FALSE.
    433433!$OMP MASTER
    434         ALLOCATE(f_addu(ijb_u:ije_u,llm) ) 
    435         ALLOCATE(f_addv(ijb_v:ije_v,llm) ) 
    436         ALLOCATE(pk(iip1,jjb_u:jje_u,llm)  ) 
    437         ALLOCATE(pks(iip1,jjb_u:jje_u)  ) 
    438         ALLOCATE(p(ijb_u:ije_u,llmp1) ) 
    439         CALL guide_init 
     434        ALLOCATE(f_addu(ijb_u:ije_u,llm) )
     435        ALLOCATE(f_addv(ijb_v:ije_v,llm) )
     436        ALLOCATE(pk(iip1,jjb_u:jje_u,llm)  )
     437        ALLOCATE(pks(iip1,jjb_u:jje_u)  )
     438        ALLOCATE(p(ijb_u:ije_u,llmp1) )
     439        CALL guide_init
    440440!$OMP END MASTER
    441441!$OMP BARRIER
     
    444444        count_no_rea=0
    445445! Calcul des constantes de rappel
    446         factt=dtvr*iperiod/daysec 
     446        factt=dtvr*iperiod/daysec
    447447!$OMP MASTER
    448448        call tau2alpha(3, iip1, jjb_v, jje_v, factt, tau_min_v, tau_max_v, alpha_v)
     
    461461!$OMP END MASTER
    462462!$OMP BARRIER
    463 ! ini_anal: etat initial egal au guidage       
     463! ini_anal: etat initial egal au guidage
    464464        IF (ini_anal) THEN
    465465            CALL guide_interp(ps,teta)
    466 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)           
     466!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    467467            DO l=1,llm
    468468              IF (guide_u) ucov(ijbu:ijeu,l)=ugui2(ijbu:ijeu,l)
     
    471471              IF (guide_Q) q(ijbu:ijeu,l)=qgui2(ijbu:ijeu,l)
    472472            ENDDO
    473            
     473
    474474            IF (guide_P) THEN
    475475!$OMP MASTER
     
    555555!    CALL WriteField_u('teta_guide',teta)
    556556!    CALL WriteField_u('masse_guide',masse)
    557    
    558    
     557
     558
    559559!-----------------------------------------------------------------------
    560 !   Ajout des champs de guidage 
     560!   Ajout des champs de guidage
    561561!-----------------------------------------------------------------------
    562562! Sauvegarde du guidage?
    563     f_out=((MOD(itau,iguide_sav).EQ.0).AND.guide_sav) 
     563    f_out=((MOD(itau,iguide_sav).EQ.0).AND.guide_sav)
    564564    IF (f_out) THEN
    565565
     
    588588        CALL guide_out("SP",jjp1,llm,p(ijb_u:ije_u,1:llm),1.)
    589589    ENDIF
    590    
     590
    591591    if (guide_u) then
    592592        if (guide_add) then
     
    600600           f_addu(ijbu:ijeu,l)=(1.-tau)*ugui1(ijbu:ijeu,l)+tau*ugui2(ijbu:ijeu,l)-ucov(ijbu:ijeu,l)
    601601          ENDDO
    602         endif 
    603    
     602        endif
     603
    604604!        CALL WriteField_u('f_addu',f_addu)
    605605
     
    632632           f_addu(ijbu:ijeu,l)=(1.-tau)*tgui1(ijbu:ijeu,l)+tau*tgui2(ijbu:ijeu,l)-teta(ijbu:ijeu,l)
    633633          ENDDO
    634         endif 
     634        endif
    635635        if (guide_zon) CALL guide_zonave_u(2,llm,f_addu)
    636636        CALL guide_addfield_u(llm,f_addu,alpha_T)
     
    653653!$OMP END MASTER
    654654!$OMP BARRIER
    655         endif 
     655        endif
    656656        if (guide_zon) CALL guide_zonave_u(2,1,f_addu(ijb_u:ije_u,1))
    657657        CALL guide_addfield_u(1,f_addu(ijb_u:ije_u,1),alpha_P)
     
    677677            f_addu(ijbu:ijeu,l)=(1.-tau)*qgui1(ijbu:ijeu,l)+tau*qgui2(ijbu:ijeu,l)-q(ijbu:ijeu,l)
    678678          ENDDO
    679         endif 
     679        endif
    680680        if (guide_zon) CALL guide_zonave_u(2,llm,f_addu)
    681681        CALL guide_addfield_u(llm,f_addu,alpha_Q)
     
    701701          ENDDO
    702702
    703         endif 
    704    
     703        endif
     704
    705705        if (guide_zon) CALL guide_zonave_v(2,jjm,llm,f_addv(ijb_v:ije_v,:))
    706        
     706
    707707        CALL guide_addfield_v(llm,f_addv(ijb_v:ije_v,:),alpha_v)
    708708        IF (f_out) CALL guide_out("v",jjm,llm,vcov(ijb_v:ije_v,:),factt)
     
    710710        IF (f_out) THEN
    711711          ! Ehouarn: Fill in the gaps adequately
    712           IF (ijbv>ijb_v) f_addv(ijb_v:ijbv-1,:)=0 
     712          IF (ijbv>ijb_v) f_addv(ijb_v:ijbv-1,:)=0
    713713          IF (ijev<ije_v) f_addv(ijev+1:ije_v,:)=0
    714714          CALL guide_out("vcov",jjm,llm,f_addv(ijb_v:ije_v,:)/factt,factt)
     
    733733    ! input variables
    734734    INTEGER,                      INTENT(IN)    :: vsize
    735     REAL, DIMENSION(ijb_u:ije_u),       INTENT(IN)    :: alpha 
     735    REAL, DIMENSION(ijb_u:ije_u),       INTENT(IN)    :: alpha
    736736    REAL, DIMENSION(ijb_u:ije_u,vsize), INTENT(INOUT) :: field
    737737
     
    756756    ! input variables
    757757    INTEGER,                      INTENT(IN)    :: vsize
    758     REAL, DIMENSION(ijb_v:ije_v),       INTENT(IN)    :: alpha 
     758    REAL, DIMENSION(ijb_v:ije_v),       INTENT(IN)    :: alpha
    759759    REAL, DIMENSION(ijb_v:ije_v,vsize), INTENT(INOUT) :: field
    760760
     
    768768
    769769  END SUBROUTINE guide_addfield_v
    770  
     770
    771771!=======================================================================
    772772
     
    774774
    775775    USE comconst_mod, ONLY: pi
    776    
     776
    777777    IMPLICIT NONE
    778778
     
    780780    INCLUDE "paramet.h"
    781781    INCLUDE "comgeom.h"
    782    
     782
    783783    ! input/output variables
    784784    INTEGER,                           INTENT(IN)    :: typ
     
    791791
    792792    INTEGER, DIMENSION (2), SAVE :: imin, imax ! averaging domain
    793 !$OMP THREADPRIVATE(imin,imax)   
     793!$OMP THREADPRIVATE(imin,imax)
    794794    INTEGER                      :: i,j,l,ij
    795795    REAL, DIMENSION (iip1)       :: lond       ! longitude in Deg.
     
    815815    ENDIF
    816816
    817    
     817
    818818!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    819819      DO l=1,vsize
     
    829829                  fieldm(j,l)=fieldm(j,l)+field(ij,l)
    830830              ENDDO
    831           ENDDO 
     831          ENDDO
    832832          fieldm(:,l)=fieldm(:,l)/REAL(imax(typ)-imin(typ)+1)
    833833    ! Compute forcing
     
    846846
    847847    USE comconst_mod, ONLY: pi
    848    
     848
    849849    IMPLICIT NONE
    850850
     
    852852    INCLUDE "paramet.h"
    853853    INCLUDE "comgeom.h"
    854    
     854
    855855    ! input/output variables
    856856    INTEGER,                           INTENT(IN)    :: typ
     
    896896                  fieldm(j,l)=fieldm(j,l)+field(ij,l)
    897897              ENDDO
    898           ENDDO 
     898          ENDDO
    899899          fieldm(:,l)=fieldm(:,l)/REAL(imax(typ)-imin(typ)+1)
    900900    ! Compute forcing
     
    909909
    910910  END SUBROUTINE guide_zonave_v
    911  
     911
    912912!=======================================================================
    913913  SUBROUTINE guide_interp(psi,teta)
     
    934934  REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)    :: plunc,plsnc !niveaux pression modele
    935935  REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)     :: plvnc       !niveaux pression modele
    936   REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)  :: p           ! pression intercouches 
     936  REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)  :: p           ! pression intercouches
    937937  REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)    :: pls, pext   ! var intermediaire
    938   REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)    :: pbarx 
    939   REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)     :: pbary 
     938  REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)    :: pbarx
     939  REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)     :: pbary
    940940  ! Variables pour fonction Exner (P milieu couche)
    941941  REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)    :: pk
    942   REAL ,ALLOCATABLE, SAVE, DIMENSION (:,:)        :: pks   
     942  REAL ,ALLOCATABLE, SAVE, DIMENSION (:,:)        :: pks
    943943  REAL                               :: unskap
    944944  ! Pression de vapeur saturante
    945945  REAL, ALLOCATABLE, SAVE,DIMENSION (:,:)      :: qsat
    946946  !Variables intermediaires interpolation
    947   REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)    :: zu1,zu2 
     947  REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)    :: zu1,zu2
    948948  REAL, ALLOCATABLE, SAVE,DIMENSION (:,:,:)     :: zv1,zv2
    949  
     949
    950950  INTEGER                            :: i,j,l,ij
    951951  CHARACTER(LEN=20),PARAMETER :: modname="guide_interp"
    952   TYPE(Request),SAVE :: Req 
     952  TYPE(Request),SAVE :: Req
    953953!$OMP THREADPRIVATE(Req)
    954    
     954
    955955    if (is_master) write(*,*)trim(modname)//': interpolate nudging variables'
    956956! -----------------------------------------------------------------
     
    959959    IF (first) THEN
    960960!$OMP MASTER
    961       ALLOCATE(plnc1(iip1,jjb_u:jje_u,nlevnc) )   
    962       ALLOCATE(plnc2(iip1,jjb_u:jje_u,nlevnc) )   
    963       ALLOCATE(plunc(iip1,jjb_u:jje_u,llm) )   
    964       ALLOCATE(plsnc(iip1,jjb_u:jje_u,llm) )   
    965       ALLOCATE(plvnc(iip1,jjb_v:jje_v,llm) )   
    966       ALLOCATE(p(iip1,jjb_u:jje_u,llmp1) )   
    967       ALLOCATE(pls(iip1,jjb_u:jje_u,llm) )   
    968       ALLOCATE(pext(iip1,jjb_u:jje_u,llm) )   
    969       ALLOCATE(pbarx(iip1,jjb_u:jje_u,llm) )   
    970       ALLOCATE(pbary(iip1,jjb_v:jje_v,llm) )   
    971       ALLOCATE(pk(iip1,jjb_u:jje_u,llm) )   
    972       ALLOCATE(pks (iip1,jjb_u:jje_u) )   
    973       ALLOCATE(qsat(ijb_u:ije_u,llm) )   
    974       ALLOCATE(zu1(iip1,jjb_u:jje_u,llm) )   
    975       ALLOCATE(zu2(iip1,jjb_u:jje_u,llm) )   
    976       ALLOCATE(zv1(iip1,jjb_v:jje_v,llm) )   
     961      ALLOCATE(plnc1(iip1,jjb_u:jje_u,nlevnc) )
     962      ALLOCATE(plnc2(iip1,jjb_u:jje_u,nlevnc) )
     963      ALLOCATE(plunc(iip1,jjb_u:jje_u,llm) )
     964      ALLOCATE(plsnc(iip1,jjb_u:jje_u,llm) )
     965      ALLOCATE(plvnc(iip1,jjb_v:jje_v,llm) )
     966      ALLOCATE(p(iip1,jjb_u:jje_u,llmp1) )
     967      ALLOCATE(pls(iip1,jjb_u:jje_u,llm) )
     968      ALLOCATE(pext(iip1,jjb_u:jje_u,llm) )
     969      ALLOCATE(pbarx(iip1,jjb_u:jje_u,llm) )
     970      ALLOCATE(pbary(iip1,jjb_v:jje_v,llm) )
     971      ALLOCATE(pk(iip1,jjb_u:jje_u,llm) )
     972      ALLOCATE(pks (iip1,jjb_u:jje_u) )
     973      ALLOCATE(qsat(ijb_u:ije_u,llm) )
     974      ALLOCATE(zu1(iip1,jjb_u:jje_u,llm) )
     975      ALLOCATE(zu2(iip1,jjb_u:jje_u,llm) )
     976      ALLOCATE(zv1(iip1,jjb_v:jje_v,llm) )
    977977      ALLOCATE(zv2(iip1,jjb_v:jje_v,llm) )
    978978!$OMP END MASTER
    979979!$OMP BARRIER
    980     ENDIF       
    981 
    982    
    983    
    984    
     980    ENDIF
     981
     982
     983
     984
    985985    IF (guide_plevs.EQ.0) THEN
    986986!$OMP DO
     
    993993            ENDDO
    994994        ENDDO
    995     ENDIF   
     995    ENDIF
    996996
    997997    if (first) then
     
    10061006        write(*,*)trim(modname)//' nudging file :'
    10071007        SELECT CASE (guide_plevs)
    1008         CASE (0) 
     1008        CASE (0)
    10091009            do l=1,nlevnc
    10101010              write(*,*)trim(modname)//' PL(',l,')=',plnc2(1,jjbu,l)
     
    10451045
    10461046! -----------------------------------------------------------------
    1047 ! Calcul niveaux pression modele 
     1047! Calcul niveaux pression modele
    10481048! -----------------------------------------------------------------
    10491049
     
    11751175                    enddo
    11761176                ENDIF
    1177                 tgui1(j*iip1,l)=tgui1((j-1)*iip1+1,l)   
    1178                 tgui2(j*iip1,l)=tgui2((j-1)*iip1+1,l)   
     1177                tgui1(j*iip1,l)=tgui1((j-1)*iip1+1,l)
     1178                tgui2(j*iip1,l)=tgui2((j-1)*iip1+1,l)
    11791179            enddo
    11801180            if (pole_nord) then
     
    11861186            if (pole_sud) then
    11871187              do i=1,iip1
    1188                 tgui1(ip1jm+i,l)=tgui1(ip1jm+1,l) 
    1189                 tgui2(ip1jm+i,l)=tgui2(ip1jm+1,l) 
     1188                tgui1(ip1jm+i,l)=tgui1(ip1jm+1,l)
     1189                tgui2(ip1jm+i,l)=tgui2(ip1jm+1,l)
    11901190              enddo
    11911191           endif
     
    12371237                    qgui2(ij,l)=zu2(i,j,l)
    12381238                enddo
    1239                 qgui1(j*iip1,l)=qgui1((j-1)*iip1+1,l)   
    1240                 qgui2(j*iip1,l)=qgui2((j-1)*iip1+1,l)   
     1239                qgui1(j*iip1,l)=qgui1((j-1)*iip1+1,l)
     1240                qgui2(j*iip1,l)=qgui2((j-1)*iip1+1,l)
    12411241            enddo
    12421242            if (pole_nord) then
     
    12481248            if (pole_sud) then
    12491249              do i=1,iip1
    1250                 qgui1(ip1jm+i,l)=qgui1(ip1jm+1,l) 
    1251                 qgui2(ip1jm+i,l)=qgui2(ip1jm+1,l) 
     1250                qgui1(ip1jm+i,l)=qgui1(ip1jm+1,l)
     1251                qgui2(ip1jm+i,l)=qgui2(ip1jm+1,l)
    12521252              enddo
    12531253            endif
     
    12591259                       plsnc(:,jjbu:jjeu,l),qsat(ijbu:ijeu,l))
    12601260            qgui1(ijbu:ijeu,l)=qgui1(ijbu:ijeu,l)*qsat(ijbu:ijeu,l)*0.01 !hum. rel. en %
    1261             qgui2(ijbu:ijeu,l)=qgui2(ijbu:ijeu,l)*qsat(ijbu:ijeu,l)*0.01 
     1261            qgui2(ijbu:ijeu,l)=qgui2(ijbu:ijeu,l)*qsat(ijbu:ijeu,l)*0.01
    12621262          enddo
    12631263
     
    12961296            ENDDO
    12971297        ENDIF
    1298        
     1298
    12991299        ! Interpolation verticale
    13001300!$OMP MASTER
     
    13151315                    ugui2(ij,l)=zu2(i,j,l)*cu(i,j)
    13161316                enddo
    1317                 ugui1(j*iip1,l)=ugui1((j-1)*iip1+1,l)   
    1318                 ugui2(j*iip1,l)=ugui2((j-1)*iip1+1,l)   
     1317                ugui1(j*iip1,l)=ugui1((j-1)*iip1+1,l)
     1318                ugui2(j*iip1,l)=ugui2((j-1)*iip1+1,l)
    13191319            enddo
    13201320            if (pole_nord) then
     
    13321332        enddo
    13331333    ENDIF
    1334    
     1334
    13351335    IF (guide_v) THEN
    13361336        ! Calcul des nouvelles valeurs des niveaux de pression du guidage
     
    13901390                    vgui2(ij,l)=zv2(i,j,l)*cv(i,j)
    13911391                enddo
    1392                 vgui1(j*iip1,l)=vgui1((j-1)*iip1+1,l)   
    1393                 vgui2(j*iip1,l)=vgui2((j-1)*iip1+1,l)   
     1392                vgui1(j*iip1,l)=vgui1((j-1)*iip1+1,l)
     1393                vgui2(j*iip1,l)=vgui2((j-1)*iip1+1,l)
    13941394            enddo
    13951395        enddo
    13961396    ENDIF
    1397    
     1397
    13981398
    13991399  END SUBROUTINE guide_interp
     
    14061406    use comconst_mod, only: pi
    14071407    use serre_mod, only: clat, clon, grossismx, grossismy
    1408    
     1408
    14091409    implicit none
    14101410
     
    14201420    REAL, INTENT(IN)    :: taumin,taumax
    14211421! output arguments:
    1422     REAL, DIMENSION(pim,jjb:jje), INTENT(OUT) :: alpha 
    1423  
     1422    REAL, DIMENSION(pim,jjb:jje), INTENT(OUT) :: alpha
     1423
    14241424!  local variables:
    14251425    LOGICAL, SAVE               :: first=.TRUE.
     
    15061506        ENDIF
    15071507! Premier appel: calcul des aires min et max et de gamma.
    1508         IF (first) THEN 
     1508        IF (first) THEN
    15091509            first=.FALSE.
    15101510            ! coordonnees du centre du zoom
    1511             CALL coordij(clon,clat,ilon,ilat) 
     1511            CALL coordij(clon,clat,ilon,ilat)
    15121512            ! aire de la maille au centre du zoom
    15131513            dxdy_min=dxdys(ilon,ilat)
     
    15321532              endif
    15331533              gamma=log(0.5)/log(gamma)
    1534               if (gamma4) then 
     1534              if (gamma4) then
    15351535                gamma=min(gamma,4.)
    15361536              endif
     
    15731573!=======================================================================
    15741574  SUBROUTINE guide_read(timestep)
    1575 
     1575    USE netcdf, ONLY: nf90_put_var
    15761576    IMPLICIT NONE
    15771577
     
    16211621             write(*,*),trim(modname)//' ncidpl,varidap',ncidpl,varidap
    16221622         endif
    1623          
     1623
    16241624! Pression si guidage sur niveaux P variables
    16251625         if (guide_plevs.EQ.2) then
     
    16301630             ENDIF
    16311631             rcode = nf90_inq_varid(ncidp, 'PRES', varidp)
    1632              IF (rcode.NE.NF_NOERR) THEN 
     1632             IF (rcode.NE.NF_NOERR) THEN
    16331633              abort_message='Nudging: error -> no PRES variable in file P.nc'
    16341634              CALL abort_gcm(modname,abort_message,1)
     
    16461646             ENDIF
    16471647             rcode = nf90_inq_varid(ncidu, 'UWND', varidu)
    1648              IF (rcode.NE.NF_NOERR) THEN 
     1648             IF (rcode.NE.NF_NOERR) THEN
    16491649              abort_message='Nudging: error -> no UWND variable in file u.nc'
    16501650              CALL abort_gcm(modname,abort_message,1)
     
    16531653             if (ncidpl.eq.-99) ncidpl=ncidu
    16541654
    1655    
     1655
    16561656             status=NF90_INQ_DIMID(ncidu, "LONU", dimid)
    16571657             status=NF90_INQUIRE_DIMENSION(ncidu,dimid,namedim,lendim)
     
    16671667                CALL abort_gcm(modname,abort_message,1)
    16681668             ENDIF
    1669  
     1669
    16701670         endif
    16711671
     
    16781678             ENDIF
    16791679             rcode = nf90_inq_varid(ncidv, 'VWND', varidv)
    1680              IF (rcode.NE.NF_NOERR) THEN 
     1680             IF (rcode.NE.NF_NOERR) THEN
    16811681              abort_message='Nudging: error -> no VWND variable in file v.nc'
    16821682              CALL abort_gcm(modname,abort_message,1)
     
    16841684             write(*,*),trim(modname)//' ncidv,varidv',ncidv,varidv
    16851685             if (ncidpl.eq.-99) ncidpl=ncidv
    1686              
     1686
    16871687             status=NF90_INQ_DIMID(ncidv, "LONV", dimid)
    16881688             status=NF90_INQUIRE_DIMENSION(ncidv,dimid,namedim,lendim)
    1689              
     1689
    16901690                IF (lendim .NE. iip1) THEN
    16911691                abort_message='dimension LONV different from iip1 in v.nc'
     
    17001700                CALL abort_gcm(modname,abort_message,1)
    17011701             ENDIF
    1702        
     1702
    17031703        endif
    17041704
     
    17111711             ENDIF
    17121712             rcode = nf90_inq_varid(ncidt, 'AIR', varidt)
    1713              IF (rcode.NE.NF_NOERR) THEN 
     1713             IF (rcode.NE.NF_NOERR) THEN
    17141714              abort_message='Nudging: error -> no AIR variable in file T.nc'
    17151715              CALL abort_gcm(modname,abort_message,1)
     
    17421742             ENDIF
    17431743             rcode = nf90_inq_varid(ncidQ, 'RH', varidQ)
    1744              IF (rcode.NE.NF_NOERR) THEN 
     1744             IF (rcode.NE.NF_NOERR) THEN
    17451745              abort_message='Nudging: error -> no RH variable in file hur.nc'
    17461746              CALL abort_gcm(modname,abort_message,1)
     
    17741774             ENDIF
    17751775             rcode = nf90_inq_varid(ncidps, 'SP', varidps)
    1776              IF (rcode.NE.NF_NOERR) THEN 
     1776             IF (rcode.NE.NF_NOERR) THEN
    17771777              abort_message='Nudging: error -> no SP variable in file ps.nc'
    17781778              CALL abort_gcm(modname,abort_message,1)
     
    17881788! Coefs ap, bp pour calcul de la pression aux differents niveaux
    17891789         IF (guide_plevs.EQ.1) THEN
    1790 #ifdef NC_DOUBLE
    1791              status=NF_GET_VARA_DOUBLE(ncidpl,varidap,1,nlevnc,apnc)
    1792              status=NF_GET_VARA_DOUBLE(ncidpl,varidbp,1,nlevnc,bpnc)
    1793 #else
    1794              status=NF_GET_VARA_REAL(ncidpl,varidap,1,nlevnc,apnc)
    1795              status=NF_GET_VARA_REAL(ncidpl,varidbp,1,nlevnc,bpnc)
    1796 #endif
     1790             status = nf90_put_var(ncidpl, varidap, apnc, [1], [nlevnc])
     1791             status = nf90_put_var(ncidpl, varidbp, bpnc, [1], [nlevnc])
    17971792         ELSEIF (guide_plevs.EQ.0) THEN
    1798 #ifdef NC_DOUBLE
    1799              status=NF_GET_VARA_DOUBLE(ncidpl,varidpl,1,nlevnc,apnc)
    1800 #else
    1801              status=NF_GET_VARA_REAL(ncidpl,varidpl,1,nlevnc,apnc)
    1802 #endif
     1793             status = nf90_put_var(ncidpl, varidpl, apnc, [1], [nlevnc])
    18031794!FC Pour les corrections la pression est deja en Pascals on commente la ligne ci-dessous
    18041795             IF(convert_Pa) apnc=apnc*100.! conversion en Pascals
     
    18241815
    18251816     IF (invert_y) start(2)=jjp1-jje_u+1
    1826 ! Pression 
     1817! Pression
    18271818     if (guide_plevs.EQ.2) then
    1828 #ifdef NC_DOUBLE
    1829          status=NF_GET_VARA_DOUBLE(ncidp,varidp,start,count,pnat2)
    1830 #else
    1831          status=NF_GET_VARA_REAL(ncidp,varidp,start,count,pnat2)
    1832 #endif
     1819         status = nf90_put_var(ncidp, varidp, pnat2, start, count)
    18331820         IF (invert_y) THEN
    18341821!           PRINT*,"Invertion impossible actuellement"
     
    18401827!  Vent zonal
    18411828     if (guide_u) then
    1842 #ifdef NC_DOUBLE
    1843          status=NF_GET_VARA_DOUBLE(ncidu,varidu,start,count,unat2)
    1844 #else
    1845          status=NF_GET_VARA_REAL(ncidu,varidu,start,count,unat2)
    1846 #endif
     1829         status = nf90_put_var(ncidu, varidu, unat2, start, count)
    18471830         IF (invert_y) THEN
    18481831!           PRINT*,"Invertion impossible actuellement"
     
    18561839!  Temperature
    18571840     if (guide_T) then
    1858 #ifdef NC_DOUBLE
    1859          status=NF_GET_VARA_DOUBLE(ncidt,varidt,start,count,tnat2)
    1860 #else
    1861          status=NF_GET_VARA_REAL(ncidt,varidt,start,count,tnat2)
    1862 #endif
     1841         status = nf90_put_var(ncidt, varidt, tnat2, start, count)
    18631842         IF (invert_y) THEN
    18641843!           PRINT*,"Invertion impossible actuellement"
     
    18701849!  Humidite
    18711850     if (guide_Q) then
    1872 #ifdef NC_DOUBLE
    1873          status=NF_GET_VARA_DOUBLE(ncidQ,varidQ,start,count,qnat2)
    1874 #else
    1875          status=NF_GET_VARA_REAL(ncidQ,varidQ,start,count,qnat2)
    1876 #endif
     1851         status = nf90_put_var(ncidQ, varidQ, qnat2, start, count)
    18771852         IF (invert_y) THEN
    18781853!           PRINT*,"Invertion impossible actuellement"
     
    18881863         count(2)=jjnb_v
    18891864         IF (invert_y) start(2)=jjm-jje_v+1
    1890 
    1891 #ifdef NC_DOUBLE
    1892          status=NF_GET_VARA_DOUBLE(ncidv,varidv,start,count,vnat2)
    1893 #else
    1894          status=NF_GET_VARA_REAL(ncidv,varidv,start,count,vnat2)
    1895 #endif
     1865         status = nf90_put_var(ncidv, varidv, vnat2, start, count)
    18961866         IF (invert_y) THEN
    18971867!           PRINT*,"Invertion impossible actuellement"
     
    19101880         count(4)=0
    19111881         IF (invert_y) start(2)=jjp1-jje_u+1
    1912 #ifdef NC_DOUBLE
    1913          status=NF_GET_VARA_DOUBLE(ncidps,varidps,start,count,psnat2)
    1914 #else
    1915          status=NF_GET_VARA_REAL(ncidps,varidps,start,count,psnat2)
    1916 #endif
     1882         status = nf90_put_var(ncidps, varidps, psnat2, start, count)
    19171883         IF (invert_y) THEN
    19181884!           PRINT*,"Invertion impossible actuellement"
     
    19261892!=======================================================================
    19271893  SUBROUTINE guide_read2D(timestep)
    1928 
     1894    USE netcdf, ONLY: nf90_put_var
    19291895    IMPLICIT NONE
    19301896
     
    20752041! Coefs ap, bp pour calcul de la pression aux differents niveaux
    20762042         if (guide_plevs.EQ.1) then
    2077 #ifdef NC_DOUBLE
    2078              status=NF_GET_VARA_DOUBLE(ncidpl,varidap,1,nlevnc,apnc)
    2079              status=NF_GET_VARA_DOUBLE(ncidpl,varidbp,1,nlevnc,bpnc)
    2080 #else
    2081              status=NF_GET_VARA_REAL(ncidpl,varidap,1,nlevnc,apnc)
    2082              status=NF_GET_VARA_REAL(ncidpl,varidbp,1,nlevnc,bpnc)
    2083 #endif
     2043             status = nf90_put_var(ncidpl, varidap, apnc, [1], [nlevnc])
     2044             status = nf90_put_var(ncidpl, varidbp, bpnc, [1], [nlevnc])
    20842045         elseif (guide_plevs.EQ.0) THEN
    2085 #ifdef NC_DOUBLE
    2086              status=NF_GET_VARA_DOUBLE(ncidpl,varidpl,1,nlevnc,apnc)
    2087 #else
    2088              status=NF_GET_VARA_REAL(ncidpl,varidpl,1,nlevnc,apnc)
    2089 #endif
     2046             status = nf90_put_var(ncidpl, varidpl, apnc, [1], [nlevnc])
    20902047             apnc=apnc*100.! conversion en Pascals
    20912048             bpnc(:)=0.
     
    21122069!  Pression
    21132070     if (guide_plevs.EQ.2) then
    2114 #ifdef NC_DOUBLE
    2115          status=NF_GET_VARA_DOUBLE(ncidp,varidp,start,count,zu)
    2116 #else
    2117          status=NF_GET_VARA_REAL(ncidp,varidp,start,count,zu)
    2118 #endif
     2071         status = nf90_put_var(ncidp, varidp, zu, start, count)
    21192072         DO i=1,iip1
    21202073             pnat2(i,:,:)=zu(:,:)
     
    21292082!  Vent zonal
    21302083     if (guide_u) then
    2131 #ifdef NC_DOUBLE
    2132          status=NF_GET_VARA_DOUBLE(ncidu,varidu,start,count,zu)
    2133 #else
    2134          status=NF_GET_VARA_REAL(ncidu,varidu,start,count,zu)
    2135 #endif
     2084         status = nf90_put_var(ncidu, varidu, zu, start, count)
    21362085         DO i=1,iip1
    21372086             unat2(i,:,:)=zu(:,:)
     
    21482097!  Temperature
    21492098     if (guide_T) then
    2150 #ifdef NC_DOUBLE
    2151          status=NF_GET_VARA_DOUBLE(ncidt,varidt,start,count,zu)
    2152 #else
    2153          status=NF_GET_VARA_REAL(ncidt,varidt,start,count,zu)
    2154 #endif
     2099         status = nf90_put_var(ncidt, varidt, zu, start, count)
    21552100         DO i=1,iip1
    21562101             tnat2(i,:,:)=zu(:,:)
     
    21662111!  Humidite
    21672112     if (guide_Q) then
    2168 #ifdef NC_DOUBLE
    2169          status=NF_GET_VARA_DOUBLE(ncidQ,varidQ,start,count,zu)
    2170 #else
    2171          status=NF_GET_VARA_REAL(ncidQ,varidQ,start,count,zu)
    2172 #endif
     2113         status = nf90_put_var(ncidQ, varidQ, zu, start, count)
    21732114         DO i=1,iip1
    21742115             qnat2(i,:,:)=zu(:,:)
    21752116         ENDDO
    2176          
     2117
    21772118         IF (invert_y) THEN
    21782119!           PRINT*,"Invertion impossible actuellement"
     
    21872128         count(2)=jjnb_v
    21882129         IF (invert_y) start(2)=jjm-jje_v+1
    2189 #ifdef NC_DOUBLE
    2190          status=NF_GET_VARA_DOUBLE(ncidv,varidv,start,count,zv)
    2191 #else
    2192          status=NF_GET_VARA_REAL(ncidv,varidv,start,count,zv)
    2193 #endif
     2130         status = nf90_put_var(ncidv, varidv, zv, start, count)
    21942131         DO i=1,iip1
    21952132             vnat2(i,:,:)=zv(:,:)
     
    21972134
    21982135         IF (invert_y) THEN
    2199  
     2136
    22002137!           PRINT*,"Invertion impossible actuellement"
    22012138!           CALL abort_gcm(modname,abort_message,1)
     
    22132150         count(4)=0
    22142151         IF (invert_y) start(2)=jjp1-jje_u+1
    2215 #ifdef NC_DOUBLE
    2216          status=NF_GET_VARA_DOUBLE(ncidps,varidps,start,count,zu(:,1))
    2217 #else
    2218          status=NF_GET_VARA_REAL(ncidps,varidps,start,count,zu(:,1))
    2219 #endif
     2152         status = nf90_put_var(ncidps, varidps, zu(:, 1), start, count)
    22202153         DO i=1,iip1
    22212154             psnat2(i,:)=zu(:,1)
     
    22302163
    22312164  END SUBROUTINE guide_read2D
    2232  
     2165
    22332166!=======================================================================
    22342167  SUBROUTINE guide_out(varname,hsize,vsize,field_loc,factt)
     
    22382171    USE comvert_mod, ONLY: presnivs
    22392172    use netcdf95, only: nf95_def_var, nf95_put_var
    2240     use netcdf, only: nf90_float
     2173    use netcdf, only: nf90_float, nf90_put_var
    22412174
    22422175    IMPLICIT NONE
     
    22462179    INCLUDE "netcdf.inc"
    22472180    INCLUDE "comgeom2.h"
    2248    
     2181
    22492182    ! Variables entree
    22502183    CHARACTER*(*), INTENT(IN)                      :: varname
     
    22662199    REAL, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: field_glo
    22672200    CHARACTER(LEN=20),PARAMETER :: modname="guide_out"
    2268    
     2201
    22692202!$OMP MASTER
    22702203    ALLOCATE(field_glo(iip1,hsize,vsize))
     
    22942227       RETURN
    22952228    ENDIF
    2296    
     2229
    22972230!$OMP MASTER
    2298     IF (timestep.EQ.0) THEN 
     2231    IF (timestep.EQ.0) THEN
    22992232! ----------------------------------------------
    23002233! initialisation fichier de sortie
     
    23032236        ierr=NF_CREATE("guide_ins.nc",IOR(NF_CLOBBER,NF_64BIT_OFFSET),nid)
    23042237! Definition des dimensions
    2305         ierr=NF_DEF_DIM(nid,"LONU",iip1,id_lonu) 
    2306         ierr=NF_DEF_DIM(nid,"LONV",iip1,id_lonv) 
    2307         ierr=NF_DEF_DIM(nid,"LATU",jjp1,id_latu) 
    2308         ierr=NF_DEF_DIM(nid,"LATV",jjm,id_latv) 
     2238        ierr=NF_DEF_DIM(nid,"LONU",iip1,id_lonu)
     2239        ierr=NF_DEF_DIM(nid,"LONV",iip1,id_lonv)
     2240        ierr=NF_DEF_DIM(nid,"LATU",jjp1,id_latu)
     2241        ierr=NF_DEF_DIM(nid,"LATV",jjm,id_latv)
    23092242        ierr=NF_DEF_DIM(nid,"LEVEL",llm,id_lev)
    23102243        ierr=NF_DEF_DIM(nid,"TIME",NF_UNLIMITED,id_tim)
     
    23242257        call nf95_def_var(nid, "alpha_q", nf90_float, (/id_lonv, id_latu/), &
    23252258             varid_alpha_q)
    2326        
     2259
    23272260        ierr=NF_ENDDEF(nid)
    23282261
    23292262! Enregistrement des variables dimensions
    2330 #ifdef NC_DOUBLE
    2331         ierr = NF_PUT_VAR_DOUBLE(nid,vid_lonu,rlonu*180./pi)
    2332         ierr = NF_PUT_VAR_DOUBLE(nid,vid_lonv,rlonv*180./pi)
    2333         ierr = NF_PUT_VAR_DOUBLE(nid,vid_latu,rlatu*180./pi)
    2334         ierr = NF_PUT_VAR_DOUBLE(nid,vid_latv,rlatv*180./pi)
    2335         ierr = NF_PUT_VAR_DOUBLE(nid,vid_lev,presnivs)
    2336         ierr = NF_PUT_VAR_DOUBLE(nid,vid_cu,cu)
    2337         ierr = NF_PUT_VAR_DOUBLE(nid,vid_cv,cv)
    2338         ierr = NF_PUT_VAR_DOUBLE(nid,vid_au,zu)
    2339         ierr = NF_PUT_VAR_DOUBLE(nid,vid_av,zv)
    2340 #else
    2341         ierr = NF_PUT_VAR_REAL(nid,vid_lonu,rlonu*180./pi)
    2342         ierr = NF_PUT_VAR_REAL(nid,vid_lonv,rlonv*180./pi)
    2343         ierr = NF_PUT_VAR_REAL(nid,vid_latu,rlatu*180./pi)
    2344         ierr = NF_PUT_VAR_REAL(nid,vid_latv,rlatv*180./pi)
    2345         ierr = NF_PUT_VAR_REAL(nid,vid_lev,presnivs)
    2346         ierr = NF_PUT_VAR_REAL(nid,vid_cu,cu)
    2347         ierr = NF_PUT_VAR_REAL(nid,vid_cv,cv)
    2348         ierr = NF_PUT_VAR_REAL(nid,vid_au,alpha_u)
    2349         ierr = NF_PUT_VAR_REAL(nid,vid_av,alpha_v)
    2350 #endif
     2263        ierr = nf90_put_var(nid, vid_lonu, rlonu * 180. / pi)
     2264        ierr = nf90_put_var(nid, vid_lonv, rlonv * 180. / pi)
     2265        ierr = nf90_put_var(nid, vid_latu, rlatu * 180. / pi)
     2266        ierr = nf90_put_var(nid, vid_latv, rlatv * 180. / pi)
     2267        ierr = nf90_put_var(nid, vid_lev, presnivs)
     2268        ierr = nf90_put_var(nid, vid_cu, cu)
     2269        ierr = nf90_put_var(nid, vid_cv, cv)
     2270        ierr = nf90_put_var(nid, vid_au, zu)
     2271        ierr = nf90_put_var(nid, vid_av, zv)
    23512272        call nf95_put_var(nid, varid_alpha_t, zt)
    23522273        call nf95_put_var(nid, varid_alpha_q, zq)
     
    23872308            ierr = NF_DEF_VAR(nid,"q",NF_FLOAT,4,dim4,varid)
    23882309        ENDIF
    2389        
     2310
    23902311        ierr = NF_ENDDEF(nid)
    23912312        ierr = NF_CLOSE(nid)
     
    23952316! Enregistrement du champ
    23962317! --------------------------------------------------------------------
    2397  
     2318
    23982319    ierr=NF_OPEN("guide_ins.nc",NF_WRITE,nid)
    23992320
     
    24202341    CASE("u","ua")
    24212342!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    2422         DO l=1,llm 
     2343        DO l=1,llm
    24232344            field_glo(:,2:jjm,l)=field_glo(:,2:jjm,l)/cu(:,2:jjm)
    24242345            field_glo(:,1,l)=0. ; field_glo(:,jjp1,l)=0.
     
    24382359!$OMP MASTER
    24392360
    2440 #ifdef NC_DOUBLE
    2441     ierr = NF_PUT_VARA_DOUBLE(nid,varid,start,count,field_glo)
    2442 #else
    2443     ierr = NF_PUT_VARA_REAL(nid,varid,start,count,field_glo)
    2444 #endif
    2445 
     2361    ierr = nf90_put_var(nid, varid, field_glo, start, count)
    24462362    ierr = NF_CLOSE(nid)
    24472363
     
    24512367
    24522368  END SUBROUTINE guide_out
    2453    
    2454  
     2369
     2370
    24552371!===========================================================================
    24562372  subroutine correctbid(iim,nl,x)
Note: See TracChangeset for help on using the changeset viewer.