/[MITgcm]/MITgcm_contrib/MPMice/beaufort/code/cpl_mpmice.F
ViewVC logotype

Diff of /MITgcm_contrib/MPMice/beaufort/code/cpl_mpmice.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1 by dimitri, Sun May 31 03:41:36 2009 UTC revision 1.8 by dimitri, Fri Feb 3 18:12:59 2012 UTC
# Line 57  CEOP Line 57  CEOP
57        Real*8  xfer_bc_tracer(2*(Nx+Ny)-4)        Real*8  xfer_bc_tracer(2*(Nx+Ny)-4)
58        Real*8  xfer_bc_veloc(2*(Nx+Ny)-6)        Real*8  xfer_bc_veloc(2*(Nx+Ny)-6)
59        _RL     local(1:sNx,1:sNy,nSx,nSy)        _RL     local(1:sNx,1:sNy,nSx,nSy)
60    
61          COMMON /FFIELDS_tmp/ fu_tmp, fv_tmp, Qnet_tmp, Qsw_tmp, EmPmR_tmp
62          _RS  fu_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
63          _RS  fv_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
64          _RS  Qnet_tmp     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
65          _RS  Qsw_tmp      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
66          _RS  EmPmR_tmp    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
67    
68    #ifdef CPL_DEBUG
69        _RL ScatArray(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL ScatArray(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
70          DO bj=1,nSy
71           DO bi=1,nSx
72            DO j=1-OLy,sNy+OLy
73             DO i=1-OLx,sNx+OLx
74              ScatArray(i,j,bi,bj) = 0.0 _d 0
75             ENDDO
76            ENDDO
77           ENDDO
78          ENDDO
79    #endif
80    
81        IF( myTime .EQ. startTime ) THEN        IF( myTime .EQ. startTime ) THEN
82    
# Line 93  C     Send ice area Line 112  C     Send ice area
112          DO bi=1,nSx          DO bi=1,nSx
113           DO j=1,sNy           DO j=1,sNy
114            DO i=1,sNx            DO i=1,sNx
115             local(i,j,bi,bj) = AREA(i,j,1,bi,bj)             local(i,j,bi,bj) = AREA(i,j,bi,bj)
116            ENDDO            ENDDO
117           ENDDO           ENDDO
118          ENDDO          ENDDO
# Line 115  C     Send ice thickness Line 134  C     Send ice thickness
134          DO bi=1,nSx          DO bi=1,nSx
135           DO j=1,sNy           DO j=1,sNy
136            DO i=1,sNx            DO i=1,sNx
137             local(i,j,bi,bj) = HEFF(i,j,1,bi,bj)             local(i,j,bi,bj) = HEFF(i,j,bi,bj)
138            ENDDO            ENDDO
139           ENDDO           ENDDO
140          ENDDO          ENDDO
# Line 196  C     Send boundary ice area Line 215  C     Send boundary ice area
215         DO bi=1,nSx         DO bi=1,nSx
216          DO j=1,sNy          DO j=1,sNy
217           DO i=1,sNx           DO i=1,sNx
218            local(i,j,bi,bj) = AREA(i,j,1,bi,bj)            local(i,j,bi,bj) = AREA(i,j,bi,bj)
219           ENDDO           ENDDO
220          ENDDO          ENDDO
221         ENDDO         ENDDO
# Line 211  C     Send boundary ice area Line 230  C     Send boundary ice area
230         idx = idx + 1         idx = idx + 1
231         xfer_bc_tracer(idx) = xfer_array(Nx,j)         xfer_bc_tracer(idx) = xfer_array(Nx,j)
232        ENDDO        ENDDO
233        DO i = (Nx-1), -1, 1        DO i = (Nx-1), 1, -1
234         idx = idx + 1         idx = idx + 1
235         xfer_bc_tracer(idx) = xfer_array(i,Ny)         xfer_bc_tracer(idx) = xfer_array(i,Ny)
236        ENDDO        ENDDO
237        DO j = (Ny-1), -1, 2        DO j = (Ny-1), 2, -1
238         idx = idx + 1         idx = idx + 1
239         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
240        ENDDO        ENDDO
# Line 234  C     Send boundary ice thickness Line 253  C     Send boundary ice thickness
253         DO bi=1,nSx         DO bi=1,nSx
254          DO j=1,sNy          DO j=1,sNy
255           DO i=1,sNx           DO i=1,sNx
256            local(i,j,bi,bj) = HEFF(i,j,1,bi,bj)            local(i,j,bi,bj) = HEFF(i,j,bi,bj)
257           ENDDO           ENDDO
258          ENDDO          ENDDO
259         ENDDO         ENDDO
# Line 249  C     Send boundary ice thickness Line 268  C     Send boundary ice thickness
268         idx = idx + 1         idx = idx + 1
269         xfer_bc_tracer(idx) = xfer_array(Nx,j)         xfer_bc_tracer(idx) = xfer_array(Nx,j)
270        ENDDO        ENDDO
271        DO i = (Nx-1), -1, 1        DO i = (Nx-1), 1, -1
272         idx = idx + 1         idx = idx + 1
273         xfer_bc_tracer(idx) = xfer_array(i,Ny)         xfer_bc_tracer(idx) = xfer_array(i,Ny)
274        ENDDO        ENDDO
275        DO j = (Ny-1), -1, 2        DO j = (Ny-1), 2, -1
276         idx = idx + 1         idx = idx + 1
277         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
278        ENDDO        ENDDO
# Line 285  C     Send boundary ice salinity Line 304  C     Send boundary ice salinity
304         idx = idx + 1         idx = idx + 1
305         xfer_bc_tracer(idx) = xfer_array(Nx,j)         xfer_bc_tracer(idx) = xfer_array(Nx,j)
306        ENDDO        ENDDO
307        DO i = (Nx-1), -1, 1        DO i = (Nx-1), 1, -1
308         idx = idx + 1         idx = idx + 1
309         xfer_bc_tracer(idx) = xfer_array(i,Ny)         xfer_bc_tracer(idx) = xfer_array(i,Ny)
310        ENDDO        ENDDO
311        DO j = (Ny-1), -1, 2        DO j = (Ny-1), 2, -1
312         idx = idx + 1         idx = idx + 1
313         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
314        ENDDO        ENDDO
# Line 321  C     Send boundary snow thickness Line 340  C     Send boundary snow thickness
340         idx = idx + 1         idx = idx + 1
341         xfer_bc_tracer(idx) = xfer_array(Nx,j)         xfer_bc_tracer(idx) = xfer_array(Nx,j)
342        ENDDO        ENDDO
343        DO i = (Nx-1), -1, 1        DO i = (Nx-1), 1, -1
344         idx = idx + 1         idx = idx + 1
345         xfer_bc_tracer(idx) = xfer_array(i,Ny)         xfer_bc_tracer(idx) = xfer_array(i,Ny)
346        ENDDO        ENDDO
347        DO j = (Ny-1), -1, 2        DO j = (Ny-1), 2, -1
348         idx = idx + 1         idx = idx + 1
349         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
350        ENDDO        ENDDO
# Line 342  C     Send boundary u ice Line 361  C     Send boundary u ice
361         DO bi=1,nSx         DO bi=1,nSx
362          DO j=1,sNy          DO j=1,sNy
363           DO i=1,sNx           DO i=1,sNx
364            local(i,j,bi,bj) = UICE(i,j,1,bi,bj)            local(i,j,bi,bj) = UICE(i,j,bi,bj)
365           ENDDO           ENDDO
366          ENDDO          ENDDO
367         ENDDO         ENDDO
# Line 357  C     Send boundary u ice Line 376  C     Send boundary u ice
376         idx = idx + 1         idx = idx + 1
377         xfer_bc_veloc(idx) = xfer_array(Nx,j)         xfer_bc_veloc(idx) = xfer_array(Nx,j)
378        ENDDO        ENDDO
379        DO i = (Nx-1), -1, 2        DO i = (Nx-1), 2, -1
380         idx = idx + 1         idx = idx + 1
381         xfer_bc_veloc(idx) = xfer_array(i,Ny)         xfer_bc_veloc(idx) = xfer_array(i,Ny)
382        ENDDO        ENDDO
383        DO j = (Ny-1), -1, 2        DO j = (Ny-1), 2, -1
384         idx = idx + 1         idx = idx + 1
385         xfer_bc_veloc(idx) = xfer_array(2,j)         xfer_bc_veloc(idx) = xfer_array(2,j)
386        ENDDO        ENDDO
# Line 378  C     Send boundary v ice Line 397  C     Send boundary v ice
397         DO bi=1,nSx         DO bi=1,nSx
398          DO j=1,sNy          DO j=1,sNy
399           DO i=1,sNx           DO i=1,sNx
400            local(i,j,bi,bj) = VICE(i,j,1,bi,bj)            local(i,j,bi,bj) = VICE(i,j,bi,bj)
401           ENDDO           ENDDO
402          ENDDO          ENDDO
403         ENDDO         ENDDO
# Line 393  C     Send boundary v ice Line 412  C     Send boundary v ice
412         idx = idx + 1         idx = idx + 1
413         xfer_bc_veloc(idx) = xfer_array(Nx,j)         xfer_bc_veloc(idx) = xfer_array(Nx,j)
414        ENDDO        ENDDO
415        DO i = (Nx-1), -1, 1        DO i = (Nx-1), 1, -1
416         idx = idx + 1         idx = idx + 1
417         xfer_bc_veloc(idx) = xfer_array(i,Ny)         xfer_bc_veloc(idx) = xfer_array(i,Ny)
418        ENDDO        ENDDO
419        DO j = (Ny-1), -1, 3        DO j = (Ny-1), 3, -1
420         idx = idx + 1         idx = idx + 1
421         xfer_bc_veloc(idx) = xfer_array(1,j)         xfer_bc_veloc(idx) = xfer_array(1,j)
422        ENDDO        ENDDO
# Line 571  C     Send ocean surface temperature Line 590  C     Send ocean surface temperature
590        ENDIF        ENDIF
591        _END_MASTER( myThid )        _END_MASTER( myThid )
592    
593    C     Send ocean surface salinity
594          DO bj=1,nSy
595           DO bi=1,nSx
596            DO j=1,sNy
597             DO i=1,sNx
598              local(i,j,bi,bj) = salt(i,j,1,bi,bj)
599             ENDDO
600            ENDDO
601           ENDDO
602          ENDDO
603          CALL GATHER_2D( xfer_array, local, myThid )
604          _BEGIN_MASTER( myThid )
605          IF ( myworldid .EQ. local_ocean_leader ) THEN
606           buffsize = Nx*Ny
607           CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
608         &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)
609          ENDIF
610          _END_MASTER( myThid )
611    
612  C     Send surface u current  C     Send surface u current
613        DO bj=1,nSy        DO bj=1,nSy
614         DO bi=1,nSx         DO bi=1,nSx
# Line 637  C     Receive ice area Line 675  C     Receive ice area
675         DO bi=1,nSx         DO bi=1,nSx
676          DO j=1,sNy          DO j=1,sNy
677           DO i=1,sNx           DO i=1,sNx
678            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            AREA(i,j,bi,bj) = local(i,j,bi,bj)
679           ENDDO           ENDDO
680          ENDDO          ENDDO
681         ENDDO         ENDDO
682        ENDDO        ENDDO
683        
684  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
685          DO bj=1,nSy
686           DO bi=1,nSx
687            DO j=1,sNy
688             DO i=1,sNx
689              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
690             ENDDO
691            ENDDO
692           ENDDO
693          ENDDO
694        CALL PLOT_FIELD_XYRL( ScatArray, 'ice area', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'ice area', myIter, myThid )
695  #endif  #endif
696    
# Line 659  C     Receive ice thickness Line 707  C     Receive ice thickness
707         DO bi=1,nSx         DO bi=1,nSx
708          DO j=1,sNy          DO j=1,sNy
709           DO i=1,sNx           DO i=1,sNx
710            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HEFF(i,j,bi,bj) = local(i,j,bi,bj)
711           ENDDO           ENDDO
712          ENDDO          ENDDO
713         ENDDO         ENDDO
714        ENDDO        ENDDO
715  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
716          DO bj=1,nSy
717           DO bi=1,nSx
718            DO j=1,sNy
719             DO i=1,sNx
720              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
721             ENDDO
722            ENDDO
723           ENDDO
724          ENDDO
725        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )
726  #endif  #endif
727    
# Line 681  C     Receive ice salinity Line 738  C     Receive ice salinity
738         DO bi=1,nSx         DO bi=1,nSx
739          DO j=1,sNy          DO j=1,sNy
740           DO i=1,sNx           DO i=1,sNx
741            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HSALT(i,j,bi,bj) = local(i,j,bi,bj)
742           ENDDO           ENDDO
743          ENDDO          ENDDO
744         ENDDO         ENDDO
745        ENDDO        ENDDO
746  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
747          DO bj=1,nSy
748           DO bi=1,nSx
749            DO j=1,sNy
750             DO i=1,sNx
751              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
752             ENDDO
753            ENDDO
754           ENDDO
755          ENDDO
756        CALL PLOT_FIELD_XYRL( ScatArray, 'ice salinity', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'ice salinity', myIter, myThid )
757  #endif  #endif
758    
# Line 703  C     Receive snow thickness Line 769  C     Receive snow thickness
769         DO bi=1,nSx         DO bi=1,nSx
770          DO j=1,sNy          DO j=1,sNy
771           DO i=1,sNx           DO i=1,sNx
772            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HSNOW(i,j,bi,bj) = local(i,j,bi,bj)
773           ENDDO           ENDDO
774          ENDDO          ENDDO
775         ENDDO         ENDDO
776        ENDDO        ENDDO
777  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
778          DO bj=1,nSy
779           DO bi=1,nSx
780            DO j=1,sNy
781             DO i=1,sNx
782              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
783             ENDDO
784            ENDDO
785           ENDDO
786          ENDDO
787        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )
788  #endif  #endif
789    
# Line 725  C     Receive u surface stress Line 800  C     Receive u surface stress
800         DO bi=1,nSx         DO bi=1,nSx
801          DO j=1,sNy          DO j=1,sNy
802           DO i=1,sNx           DO i=1,sNx
803            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            fu(i,j,bi,bj) = AREA(i,j,bi,bj) * local(i,j,bi,bj) +
804         &                (1.-AREA(i,j,bi,bj)) * fu_tmp(i,j,bi,bj)
805           ENDDO           ENDDO
806          ENDDO          ENDDO
807         ENDDO         ENDDO
808        ENDDO        ENDDO
809  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
810          DO bj=1,nSy
811           DO bi=1,nSx
812            DO j=1,sNy
813             DO i=1,sNx
814              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
815             ENDDO
816            ENDDO
817           ENDDO
818          ENDDO
819        CALL PLOT_FIELD_XYRL( ScatArray, 'u stress', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'u stress', myIter, myThid )
820  #endif  #endif
821    
# Line 747  C     Receive v surface stress Line 832  C     Receive v surface stress
832         DO bi=1,nSx         DO bi=1,nSx
833          DO j=1,sNy          DO j=1,sNy
834           DO i=1,sNx           DO i=1,sNx
835            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            fv(i,j,bi,bj) = AREA(i,j,bi,bj) * local(i,j,bi,bj) +
836         &                (1.-AREA(i,j,bi,bj)) * fv_tmp(i,j,bi,bj)
837           ENDDO           ENDDO
838          ENDDO          ENDDO
839         ENDDO         ENDDO
840        ENDDO        ENDDO
841  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
842          DO bj=1,nSy
843           DO bi=1,nSx
844            DO j=1,sNy
845             DO i=1,sNx
846              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
847             ENDDO
848            ENDDO
849           ENDDO
850          ENDDO
851        CALL PLOT_FIELD_XYRL( ScatArray, 'v stress', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'v stress', myIter, myThid )
852  #endif  #endif
853    
# Line 769  C     Receive residual shortwave Line 864  C     Receive residual shortwave
864         DO bi=1,nSx         DO bi=1,nSx
865          DO j=1,sNy          DO j=1,sNy
866           DO i=1,sNx           DO i=1,sNx
867            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            Qsw(i,j,bi,bj) = -AREA(i,j,bi,bj) * local(i,j,bi,bj) +
868         &                  (1.-AREA(i,j,bi,bj)) * Qsw_tmp(i,j,bi,bj)
869           ENDDO           ENDDO
870          ENDDO          ENDDO
871         ENDDO         ENDDO
872        ENDDO        ENDDO
873  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
874          DO bj=1,nSy
875           DO bi=1,nSx
876            DO j=1,sNy
877             DO i=1,sNx
878              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
879             ENDDO
880            ENDDO
881           ENDDO
882          ENDDO
883        CALL PLOT_FIELD_XYRL( ScatArray, 'shortwave', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'shortwave', myIter, myThid )
884  #endif  #endif
885    
# Line 791  C     Receive heat flux Line 896  C     Receive heat flux
896         DO bi=1,nSx         DO bi=1,nSx
897          DO j=1,sNy          DO j=1,sNy
898           DO i=1,sNx           DO i=1,sNx
899            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            fv(i,j,bi,bj) = Qsw(i,j,bi,bj) -
900         &                   AREA(i,j,bi,bj) * local(i,j,bi,bj) +
901         &               (1.-AREA(i,j,bi,bj)) * Qnet_tmp(i,j,bi,bj)
902           ENDDO           ENDDO
903          ENDDO          ENDDO
904         ENDDO         ENDDO
905        ENDDO        ENDDO
906  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
907          DO bj=1,nSy
908           DO bi=1,nSx
909            DO j=1,sNy
910             DO i=1,sNx
911              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
912             ENDDO
913            ENDDO
914           ENDDO
915          ENDDO
916        CALL PLOT_FIELD_XYRL( ScatArray, 'heat flux', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'heat flux', myIter, myThid )
917  #endif  #endif
918    
# Line 813  C     Receive freshwater flux Line 929  C     Receive freshwater flux
929         DO bi=1,nSx         DO bi=1,nSx
930          DO j=1,sNy          DO j=1,sNy
931           DO i=1,sNx           DO i=1,sNx
932            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            EmPmR(i,j,bi,bj) = - rhoConstFresh *
933         &                    AREA(i,j,bi,bj) * local(i,j,bi,bj) +
934         &                (1.-AREA(i,j,bi,bj)) * EmPmR_tmp(i,j,bi,bj)
935           ENDDO           ENDDO
936          ENDDO          ENDDO
937         ENDDO         ENDDO
938        ENDDO        ENDDO
939  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
940          DO bj=1,nSy
941           DO bi=1,nSx
942            DO j=1,sNy
943             DO i=1,sNx
944              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
945             ENDDO
946            ENDDO
947           ENDDO
948          ENDDO
949        CALL PLOT_FIELD_XYRL( ScatArray, 'freshwater', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'freshwater', myIter, myThid )
950  #endif  #endif
951    
# Line 835  C     Receive salt flux Line 962  C     Receive salt flux
962         DO bi=1,nSx         DO bi=1,nSx
963          DO j=1,sNy          DO j=1,sNy
964           DO i=1,sNx           DO i=1,sNx
965            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            saltFlux(i,j,bi,bj) = - AREA(i,j,bi,bj) * local(i,j,bi,bj)
966           ENDDO           ENDDO
967          ENDDO          ENDDO
968         ENDDO         ENDDO
969        ENDDO        ENDDO
970  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
971          DO bj=1,nSy
972           DO bi=1,nSx
973            DO j=1,sNy
974             DO i=1,sNx
975              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
976             ENDDO
977            ENDDO
978           ENDDO
979          ENDDO
980        CALL PLOT_FIELD_XYRL( ScatArray, 'salt flux', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'salt flux', myIter, myThid )
981  #endif  #endif
982    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.22