Listing complet des modifications apportees au code UCL
pour le couplage POLCA
par rapport a la version IPSLCM4 du Lodyc



===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/bloc.Com,v
retrieving revision 1.3
diff -r1.3 bloc.Com
57c57
<      & ,ust2s(imax,jmax),ust2b(imax,jmax)
---
>      & ,ust2s(imax,jmax),ust2b(imax,jmax),phisc(imax,jmax)
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/defgrid.f,v
retrieving revision 1.3
diff -r1.3 defgrid.f
113a114
>         phisc(i,j)  = 0.0
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/forcat.f,v
retrieving revision 1.2
diff -r1.2 forcat.f
59c59,60
<             fwat(i,j)=fwat(i,j)+runoff(i,j)*86400*1000
---
> c - Dans le cas couple, runoff_lln=0.0
>             fwat(i,j)=fwat(i,j)+runoff_lln(i,j)*86400*1000
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/icdyna.Fom,v
retrieving revision 1.2
31a32
>           phisc(i,j)   = 0.0
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/ice.com,v
retrieving revision 1.4
diff -r1.4 ice.com
98c98
< c runoff    river runoff
---
> c runoff_lln river runoff
141c141
<      &  albecn(imax,jmax),tauc(imax,jmax),runoff(imax,jmax),
---
>      &  albecn(imax,jmax),tauc(imax,jmax),runoff_lln(imax,jmax),
143c143
<      &  , fder(imax,jmax)
---
>      &  , fder(imax,jmax), calving(imax,jmax)
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/icemodel.f,v
retrieving revision 1.5
111,112c111,113
<
<         if (mod(numit,nsav).eq.0) then
---
> CEM On sauve un etat de redemarrage a chaque fin de mois (1 relance)
> C        if (mod(numit,nsav).eq.0) then
>         if (numit.eq.nlast) then
114c115,117
<           indicf = (nlast - numit) / nsav
---
> CEM Le nom du restart contient le numero du jour de la fin de la relance
> c          indicf = (nlast - numit) / nsav
>           indicf = nlast / (daysec / dts(ks2) )
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/icetooce.f,v
retrieving revision 1.4
diff -r1.4 icetooce.f
15c15
<       real sbcocn(imax,jmax,10)
---
>       real sbcocn(imax,jmax,11)
26c26
<       sbcocn(:,:,8:10) = 0.0e0
---
>       sbcocn(:,:,8:11) = 0.0e0
39a41,43
> c     Calving
> c       Multiply by rho0 to obtain the right dimensions (Kg/m2/s)
>          sbcocn(i,j,11)=phisc(i,j)*rho0/dts(ks2)
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/ocetoice.F,v
retrieving revision 1.4
diff -r1.4 ocetoice.F
35c35
<          runoff(i,j)=0.0
---
>          runoff_lln(i,j)=0.0
36a37,38
> c    calving (mm/day)
>          calving(i,j)=0.0
50,57c52,56
<       IF ( imax .EQ. 92 ) THEN
<           i = 25 ; j = 2
<       ELSE IF ( imax .EQ. 182 ) THEN
<           i = 50 ; j = 4
<       ELSE IF ( imax .EQ. 722 ) THEN
<           i = 200 ; j = 16
<       ENDIF
<       write(98,*) tairox(i,j),tairoy(i,j)
---
>       i=50 ;  j=4
>       write(98,*)
>      &       tairox(i,j),tairoy(i,j)
>       write(98,*) sbcocn(i,j,6),sbcocn(i,j,7), sbcocn(i,j,8),
>      &               sbcocn(i,j,9)
82,90c81,82
<       IF ( imax .EQ. 92 ) THEN
<           i = 25 ; j = 2
<       ELSE IF ( imax .EQ. 182 ) THEN
<           i = 50 ; j = 4
<       ELSE IF ( imax .EQ. 722 ) THEN
<           i = 200 ; j = 16
<       ENDIF
< C      i=50
< C      j=12
---
>       i=50
>       j=12
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/ocetoice.coupled.h,v
retrieving revision 1.4
diff -r1.4 ocetoice.coupled.h
10c10
<       real ciobc (imax,jmax,12)
---
>       real ciobc (imax,jmax,13)
23c23
< c le flux non solaire avec le flux IR montant sur la glace
---
> c le flux non solaire sauf le flux IR montant sur la glace
26,27c26,28
< c le bilan hydrique ( precip liquide - evap ) + runoff
<          fwat   ( i, j) = ciobc ( i, j,  5) + ciobc ( i, j,  7)
---
> c le bilan hydrique ( precip totale - evap
> c                    SANS le runoff et le calving )
>          fwat   ( i, j) = ciobc ( i, j,  5)
29a31,32
> c le calving (utilise seulement pour bilan de chaleur ds les leads)
>          calving ( i, j) = ciobc ( i, j,  13)
42c45
<          runoff ( i, j) = 0.0e0
---
>          runoff_lln ( i, j) = 0.0e0
54c57
<      &       ,cloud(i,j),fwat(i,j),runoff(i,j)
---
>      &       ,cloud(i,j),fwat(i,j),runoff_lln(i,j)
121c124
< c$$$      CALL prihre( runoff,imax,jmax,1,imax,1,1,jmax,1,zfp,2)
---
> c$$$      CALL prihre( runoff_lln,imax,jmax,1,imax,1,1,jmax,1,zfp,2)
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/outave.f,v
retrieving revision 1.2
diff -r1.2 outave.f
357a358
>           cmo(i,j,35)= dmnbq(i,j)
409a411
>               cmoymo(i,j,35)= cmoymo(i,j,35)+ cmo(i,j,35)
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/prep.sed,v
retrieving revision 1.4
diff -r1.4 prep.sed
25c25,27
< s/^Ccp0 /     /g
---
> s/^Ccpl /     /g
> # Ccp0 ou Ccpl : [Methode de couplage]
> s/^Ccp2 /     /g
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/shine.f,v
retrieving revision 1.2
diff -r1.2 shine.f
33,35c33,54
<       alphd  = 0.80
<       alphdi = 0.72
<       alphs  = 0.65
---
> CEM Idem
>       if (ih.eq.1) THEN
> CEM Correction for Arctic domain (all values are reduced by 0.1)
>         alphd  = 0.70
>         alphdi = 0.62
>         alphs  = 0.55
> CEM  Mise a zero correction nuageuse et reduction de l'albedo glace fondante
>         cgren  = 0.00
>         albin  = 0.40
> C coefficients of linear and cubic functions
>         zc1 = 0.372
>         zc2 = 0.1467
>         zc3 = 1.6
>       else
>         alphd  = 0.80
>         alphdi = 0.72
>         alphs  = 0.65
>         zc1 = 0.472
>         zc2 = 0.2467
>         zc3 = 3.6
>       endif
> CEM Idem
52c71
<                    al = 0.472+2.0*(alphdi-0.472)*(hgbq-1.0)
---
>                    al = zc1 +2.0*(alphdi-zc1)*(hgbq-1.0)
54c73
<                    al = 0.2467+(0.7049*hgbq)-(0.8608*(hgbq*hgbq))+
---
>                    al = zc2 +(0.7049*hgbq)-(0.8608*(hgbq*hgbq))+
57c76
<                    al = 0.1+3.6*hgbq
---
>                    al = 0.1+zc3*hgbq
83c102
<                zalbp = 0.472+2.*(alphdi-0.472)*(hgbq-1.)
---
>                zalbp = zc1+2.*(alphdi-zc1)*(hgbq-1.)
85c104
<                  zalbp = 0.2467+
---
>                  zalbp = zc2+
89c108
<             zalbp = 0.1+3.6*hgbq
---
>             zalbp = 0.1+zc3*hgbq
98c117
<                  zalbp = 0.472+(2.*(albice-0.472)*(hgbq-1.))
---
>                  zalbp = zc1+(2.*(albice-zc1)*(hgbq-1.))
100c119
<                  zalbp = 0.2467+0.7049*hgbq
---
>                  zalbp = zc2+0.7049*hgbq
104c123
<             zalbp = 0.1+3.6*hgbq
---
>             zalbp = 0.1+zc3*hgbq
===================================================================
RCS file: /home/opalod/CVSROOT/OPA/SRC_UCL/thersf.Fom,v
retrieving revision 1.4
diff -r1.4 thersf.Fom
25,26c25,33
<       dimension zhgbqp(imax,jmax),zhnpbq(imax,jmax)
<       dimension fdtcn(imax,jmax)
---
>       dimension zhgbqp(imax,jmax),zhnpbq(imax,jmax)
>       dimension fdtcn(imax,jmax), zcalving(imax,jmax)
>       dimension zcalv(imax,jmax), zcalv2(imax,jmax)
>       REAL zspsc
>       REAL zrescalv
>       REAL zlimcalv
>       REAL zaire
>       INTEGER ismooth
>       INTEGER jfonte, jlimit
83a93
>            zcalving(i,j) = raptime * calving(i,j)

92c105
<           do 200 i=is1(j),is2(j)
---
>           DO 200 i=is1(j),is2(j)
140a154,284
> c
> c
> c-- Calcul du calving rereparti sur toute la zone geographique de
> c-- sa fonte en fonction de la proportion de maille libre de glace
> c
> c  1: Inuit Nunat (Groenland)
>       zcalv(:,:)= 0.
>       zrescalv=0.
>       zaire=0.
> c Cumul des valeurs de calving de l Inuit Nunat
>       DO i=117,134
>         DO j=116,140
>           zrescalv=zrescalv+zcalving(i,j)*aire(i,j)
>           zcalving(i,j)=0.
>         ENDDO
>       ENDDO
> c
> c
>       call flush(2)
> c
>       DO i=1,182
>         DO j=1,149
>           zaire=zaire+tms(i,j,ks2)*aire(i,j)
>         ENDDO
>       ENDDO
> c
>       zrescalv=zrescalv/zaire
>       DO i=1,182
>         DO j=1,149
>           zcalv(i,j) = tms(i,j,ks2)*zrescalv
>         ENDDO
>       ENDDO
> c
> c  2: Antarctique
> c      i = 1 a 182
>       DO i=1,182
>         j=1
>         do while (ABS(zcalving (i,j)) .lt. zeps0
>      $              .and. j .lt. 50 )
>           j=j+1
>         enddo
>         if ( j .lt. 50) then
>             jfonte=j
>             zcalv(i,j) = zcalv(i,j) +
>      $         tms(i,j,ks2)*zcalving(i,j)*albq(i,j)
>             zspsc = ( zcalving(i,j) -
>      $         tms(i,j,ks2)*zcalving(i,j)*albq(i,j))*aire(i,j)
>             do while ( zspsc .gt. zeps0*aire(i,j) )
>               jfonte=jfonte+1
>               if (aire(i,jfonte) .gt. 0.) then
>                 zcalv(i,jfonte) = zcalv(i,jfonte) +
>      $           tms(i,jfonte,ks2)* zspsc *
>      $           albq(i,jfonte) /
>      $           aire(i,jfonte)
>               endif
>               zspsc = zspsc -
>      $           tms(i,jfonte,ks2)* zspsc * albq(i,jfonte)
>             enddo
>         endif
> c   On passe une deuxieme fois pour les lignes a double deversement
> c
>         j=j+1
>         do while (ABS(zcalving (i,j)) .lt. zeps0
>      $              .and. j .lt. 50 )
>           j=j+1
>         enddo
>         if ( j .lt. 50) then
>             jfonte=j
>             zcalv(i,j) = zcalv(i,j) +
>      $         tms(i,j,ks2)*zcalving(i,j)*albq(i,j)
>             zspsc = ( zcalving(i,j) -
>      $         tms(i,j,ks2)*zcalving(i,j)*albq(i,j))*aire(i,j)
>             do while ( zspsc .gt. zeps0*aire(i,j) )
>               jfonte=jfonte+1
>               if (aire(i,jfonte) .gt. 0.) then
>                 zcalv(i,jfonte) = zcalv(i,jfonte) +
>      $           tms(i,jfonte,ks2)* zspsc *
>      $           albq(i,jfonte) /
>      $           aire(i,jfonte)
>               endif
>               zspsc = zspsc -
>      $           tms(i,jfonte,ks2)* zspsc * albq(i,jfonte)
>             enddo
>         endif
> c
> c    En bout de banquise, le calving est reparti sur 3
> c    point de mer libre
> c    si la valeur du dernier point de deversement depasse zlimcalv
> c
>         zlimcalv=.15
> c
>         j=50
>         do while (ABS(zcalv (i,j)) .lt. zlimcalv
>      $              .and. j .gt. 1 )
>           j=j-1
>         enddo
>         if ( j .gt. 1) then
>             zspsc = ( zcalv(i,j)*aire(i,j)
>      $              + zcalv(i,j-1)*aire(i,j-1) ) / 3.
>             zcalv(i,j)=0.
>             zcalv(i,j-1)=0.
>             ismooth=0
>             jfonte=j-1
>             do while ( ismooth .lt. 3 )
> c              WRITE(2,*) 'Thersf: albq' , albq(i,jfonte)
> c              WRITE(2,*) 'Thersf: aire' , aire(i,jfonte)
>               if (aire(i,jfonte) .gt. 0.) then
>                 if ( (1-albq(i,jfonte)) .lt. 0.5 ) then
>                   zcalv(i,jfonte) = zcalv(i,jfonte) +
>      $              tms(i,jfonte,ks2) * zspsc /
>      $              aire(i,jfonte)
> c              WRITE(2,*) 'Thersf: zcalv' , zcalv(i,jfonte)
> c              WRITE(2,*) 'Thersf: j' , jfonte
>                   ismooth=ismooth+1
>                 endif
>               endif
>               jfonte=jfonte+1
>             enddo
>         endif
>       ENDDO
> c
177c322,338
<           zfontn     = zhnpbq(i,j)*xln/ddtb
---
> c-- Calcul du calving rereparti sur toute la zone geographique de
> c-- sa fonte en fonction de la proporetion de maille libre de glace
> c
> c--on calcule ici un nouveau flux de calving assurant
> c  la conservation de la masse lorsque le flux sera multiplie par la
> c  surface eau de la maille (tout le calving est suppose fondre dans la
> c  partie lead de la maille).
> C Test a virer apres phase de validation?
>         IF (ABS(zcalv(i,j)) .GE. zeps0 ) THEN
>               IF (albq(i,j) .LT. zeps0) THEN
>                  WRITE(6,*)
>      $  'WARNING: significant calving in mesh with very small leads'
>                  stop
>               ENDIF
>               zcalv2(i,j) = zcalv(i,j) / albq(i,j)
>           ENDIF
>           zfontn     = (zhnpbq(i,j)+zcalv2(i,j)*rhoesn) *xln/ddtb
481a644
> Cfdd      if (icoupl .eq. 0) then
485a649,653
> Cfdd      else
> Cfdd      pme        = (zfwat(i,j)-zhnpbq(i,j)*(1.-ain(i,j))*rhon
> Cfdd &                  -dmnbq(i,j))
> Cfdd &                  /ddtb
> Cfdd      endif
487a656
> Cfdd      phisc(i,j) = -zcalving(i,j)/rho0 + phisc(i,j)
512a682,691
>           pme        = (zfwat(34,116)-zhnpbq(34,116)*(1.-
>      &              ain(34,116))*rhon-dmnbq(34,116))/ddtb
> c       write(*,*) 'pme', pme
> c       write(*,*) 'zfwat(34,116', zfwat(34,116)
> c       write(*,*) 'dmnbq(34,116', dmnbq(34,116)
> c          write(*,*) 'zhnpbq(34,116)', zhnpbq(34,116)
> c          write(*,*) 'ain(34,116)', ain(34,116)
> c          write(*,*) 'phiss(34,116,0)', phiss(34,116,0)
> c