/[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.5 by dimitri, Fri Feb 3 14:08:28 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/
62         & fu_tmp, fv_tmp, Qnet_tmp, Qsw_tmp, EmPmR_tmp, saltFlux_tmp
63          _RS  fu_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
64          _RS  fv_tmp       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
65          _RS  Qnet_tmp     (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
66          _RS  Qsw_tmp      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
67          _RS  EmPmR_tmp    (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
68    
69    #ifdef CPL_DEBUG
70        _RL ScatArray(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL ScatArray(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
71          DO bj=1,nSy
72           DO bi=1,nSx
73            DO j=1-OLy,sNy+OLy
74             DO i=1-OLx,sNx+OLx
75              ScatArray(i,j,bi,bj) = 0.0 _d 0
76             ENDDO
77            ENDDO
78           ENDDO
79          ENDDO
80    #endif
81    
82        IF( myTime .EQ. startTime ) THEN        IF( myTime .EQ. startTime ) THEN
83    
# Line 211  C     Send boundary ice area Line 231  C     Send boundary ice area
231         idx = idx + 1         idx = idx + 1
232         xfer_bc_tracer(idx) = xfer_array(Nx,j)         xfer_bc_tracer(idx) = xfer_array(Nx,j)
233        ENDDO        ENDDO
234        DO i = (Nx-1), -1, 1        DO i = (Nx-1), 1, -1
235         idx = idx + 1         idx = idx + 1
236         xfer_bc_tracer(idx) = xfer_array(i,Ny)         xfer_bc_tracer(idx) = xfer_array(i,Ny)
237        ENDDO        ENDDO
238        DO j = (Ny-1), -1, 2        DO j = (Ny-1), 2, -1
239         idx = idx + 1         idx = idx + 1
240         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
241        ENDDO        ENDDO
# Line 249  C     Send boundary ice thickness Line 269  C     Send boundary ice thickness
269         idx = idx + 1         idx = idx + 1
270         xfer_bc_tracer(idx) = xfer_array(Nx,j)         xfer_bc_tracer(idx) = xfer_array(Nx,j)
271        ENDDO        ENDDO
272        DO i = (Nx-1), -1, 1        DO i = (Nx-1), 1, -1
273         idx = idx + 1         idx = idx + 1
274         xfer_bc_tracer(idx) = xfer_array(i,Ny)         xfer_bc_tracer(idx) = xfer_array(i,Ny)
275        ENDDO        ENDDO
276        DO j = (Ny-1), -1, 2        DO j = (Ny-1), 2, -1
277         idx = idx + 1         idx = idx + 1
278         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
279        ENDDO        ENDDO
# Line 285  C     Send boundary ice salinity Line 305  C     Send boundary ice salinity
305         idx = idx + 1         idx = idx + 1
306         xfer_bc_tracer(idx) = xfer_array(Nx,j)         xfer_bc_tracer(idx) = xfer_array(Nx,j)
307        ENDDO        ENDDO
308        DO i = (Nx-1), -1, 1        DO i = (Nx-1), 1, -1
309         idx = idx + 1         idx = idx + 1
310         xfer_bc_tracer(idx) = xfer_array(i,Ny)         xfer_bc_tracer(idx) = xfer_array(i,Ny)
311        ENDDO        ENDDO
312        DO j = (Ny-1), -1, 2        DO j = (Ny-1), 2, -1
313         idx = idx + 1         idx = idx + 1
314         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
315        ENDDO        ENDDO
# Line 321  C     Send boundary snow thickness Line 341  C     Send boundary snow thickness
341         idx = idx + 1         idx = idx + 1
342         xfer_bc_tracer(idx) = xfer_array(Nx,j)         xfer_bc_tracer(idx) = xfer_array(Nx,j)
343        ENDDO        ENDDO
344        DO i = (Nx-1), -1, 1        DO i = (Nx-1), 1, -1
345         idx = idx + 1         idx = idx + 1
346         xfer_bc_tracer(idx) = xfer_array(i,Ny)         xfer_bc_tracer(idx) = xfer_array(i,Ny)
347        ENDDO        ENDDO
348        DO j = (Ny-1), -1, 2        DO j = (Ny-1), 2, -1
349         idx = idx + 1         idx = idx + 1
350         xfer_bc_tracer(idx) = xfer_array(1,j)         xfer_bc_tracer(idx) = xfer_array(1,j)
351        ENDDO        ENDDO
# Line 357  C     Send boundary u ice Line 377  C     Send boundary u ice
377         idx = idx + 1         idx = idx + 1
378         xfer_bc_veloc(idx) = xfer_array(Nx,j)         xfer_bc_veloc(idx) = xfer_array(Nx,j)
379        ENDDO        ENDDO
380        DO i = (Nx-1), -1, 2        DO i = (Nx-1), 2, -1
381         idx = idx + 1         idx = idx + 1
382         xfer_bc_veloc(idx) = xfer_array(i,Ny)         xfer_bc_veloc(idx) = xfer_array(i,Ny)
383        ENDDO        ENDDO
384        DO j = (Ny-1), -1, 2        DO j = (Ny-1), 2, -1
385         idx = idx + 1         idx = idx + 1
386         xfer_bc_veloc(idx) = xfer_array(2,j)         xfer_bc_veloc(idx) = xfer_array(2,j)
387        ENDDO        ENDDO
# Line 393  C     Send boundary v ice Line 413  C     Send boundary v ice
413         idx = idx + 1         idx = idx + 1
414         xfer_bc_veloc(idx) = xfer_array(Nx,j)         xfer_bc_veloc(idx) = xfer_array(Nx,j)
415        ENDDO        ENDDO
416        DO i = (Nx-1), -1, 1        DO i = (Nx-1), 1, -1
417         idx = idx + 1         idx = idx + 1
418         xfer_bc_veloc(idx) = xfer_array(i,Ny)         xfer_bc_veloc(idx) = xfer_array(i,Ny)
419        ENDDO        ENDDO
420        DO j = (Ny-1), -1, 3        DO j = (Ny-1), 3, -1
421         idx = idx + 1         idx = idx + 1
422         xfer_bc_veloc(idx) = xfer_array(1,j)         xfer_bc_veloc(idx) = xfer_array(1,j)
423        ENDDO        ENDDO
# Line 571  C     Send ocean surface temperature Line 591  C     Send ocean surface temperature
591        ENDIF        ENDIF
592        _END_MASTER( myThid )        _END_MASTER( myThid )
593    
594    C     Send ocean surface salinity
595          DO bj=1,nSy
596           DO bi=1,nSx
597            DO j=1,sNy
598             DO i=1,sNx
599              local(i,j,bi,bj) = salt(i,j,1,bi,bj)
600             ENDDO
601            ENDDO
602           ENDDO
603          ENDDO
604          CALL GATHER_2D( xfer_array, local, myThid )
605          _BEGIN_MASTER( myThid )
606          IF ( myworldid .EQ. local_ocean_leader ) THEN
607           buffsize = Nx*Ny
608           CALL MPI_SEND(xfer_array,buffsize,MPI_DOUBLE_PRECISION,
609         &    local_ice_leader,SssTag,MPI_COMM_WORLD,mpierr)
610          ENDIF
611          _END_MASTER( myThid )
612    
613  C     Send surface u current  C     Send surface u current
614        DO bj=1,nSy        DO bj=1,nSy
615         DO bi=1,nSx         DO bi=1,nSx
# Line 637  C     Receive ice area Line 676  C     Receive ice area
676         DO bi=1,nSx         DO bi=1,nSx
677          DO j=1,sNy          DO j=1,sNy
678           DO i=1,sNx           DO i=1,sNx
679            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            AREA(i,j,bi,bj) = local(i,j,bi,bj)
680           ENDDO           ENDDO
681          ENDDO          ENDDO
682         ENDDO         ENDDO
683        ENDDO        ENDDO
684        
685  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
686          DO bj=1,nSy
687           DO bi=1,nSx
688            DO j=1,sNy
689             DO i=1,sNx
690              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
691             ENDDO
692            ENDDO
693           ENDDO
694          ENDDO
695        CALL PLOT_FIELD_XYRL( ScatArray, 'ice area', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'ice area', myIter, myThid )
696  #endif  #endif
697    
# Line 659  C     Receive ice thickness Line 708  C     Receive ice thickness
708         DO bi=1,nSx         DO bi=1,nSx
709          DO j=1,sNy          DO j=1,sNy
710           DO i=1,sNx           DO i=1,sNx
711            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HEFF(i,j,bi,bj) = local(i,j,bi,bj)
712           ENDDO           ENDDO
713          ENDDO          ENDDO
714         ENDDO         ENDDO
715        ENDDO        ENDDO
716  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
717          DO bj=1,nSy
718           DO bi=1,nSx
719            DO j=1,sNy
720             DO i=1,sNx
721              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
722             ENDDO
723            ENDDO
724           ENDDO
725          ENDDO
726        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )
727  #endif  #endif
728    
# Line 681  C     Receive ice salinity Line 739  C     Receive ice salinity
739         DO bi=1,nSx         DO bi=1,nSx
740          DO j=1,sNy          DO j=1,sNy
741           DO i=1,sNx           DO i=1,sNx
742            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HSALT(i,j,bi,bj) = local(i,j,bi,bj)
743           ENDDO           ENDDO
744          ENDDO          ENDDO
745         ENDDO         ENDDO
746        ENDDO        ENDDO
747  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
748          DO bj=1,nSy
749           DO bi=1,nSx
750            DO j=1,sNy
751             DO i=1,sNx
752              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
753             ENDDO
754            ENDDO
755           ENDDO
756          ENDDO
757        CALL PLOT_FIELD_XYRL( ScatArray, 'ice salinity', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'ice salinity', myIter, myThid )
758  #endif  #endif
759    
# Line 703  C     Receive snow thickness Line 770  C     Receive snow thickness
770         DO bi=1,nSx         DO bi=1,nSx
771          DO j=1,sNy          DO j=1,sNy
772           DO i=1,sNx           DO i=1,sNx
773            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            HSNOW(i,j,bi,bj) = local(i,j,bi,bj)
774           ENDDO           ENDDO
775          ENDDO          ENDDO
776         ENDDO         ENDDO
777        ENDDO        ENDDO
778  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
779          DO bj=1,nSy
780           DO bi=1,nSx
781            DO j=1,sNy
782             DO i=1,sNx
783              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
784             ENDDO
785            ENDDO
786           ENDDO
787          ENDDO
788        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'ice thickness', myIter, myThid )
789  #endif  #endif
790    
# Line 725  C     Receive u surface stress Line 801  C     Receive u surface stress
801         DO bi=1,nSx         DO bi=1,nSx
802          DO j=1,sNy          DO j=1,sNy
803           DO i=1,sNx           DO i=1,sNx
804            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)
805         &                (1.-AREA(i,j,bi,bj) * fu_tmp(i,j,bi,bj)
806           ENDDO           ENDDO
807          ENDDO          ENDDO
808         ENDDO         ENDDO
809        ENDDO        ENDDO
810  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
811          DO bj=1,nSy
812           DO bi=1,nSx
813            DO j=1,sNy
814             DO i=1,sNx
815              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
816             ENDDO
817            ENDDO
818           ENDDO
819          ENDDO
820        CALL PLOT_FIELD_XYRL( ScatArray, 'u stress', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'u stress', myIter, myThid )
821  #endif  #endif
822    
# Line 747  C     Receive v surface stress Line 833  C     Receive v surface stress
833         DO bi=1,nSx         DO bi=1,nSx
834          DO j=1,sNy          DO j=1,sNy
835           DO i=1,sNx           DO i=1,sNx
836            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)
837         &                (1.-AREA(i,j,bi,bj) * fv_tmp(i,j,bi,bj)
838           ENDDO           ENDDO
839          ENDDO          ENDDO
840         ENDDO         ENDDO
841        ENDDO        ENDDO
842  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
843          DO bj=1,nSy
844           DO bi=1,nSx
845            DO j=1,sNy
846             DO i=1,sNx
847              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
848             ENDDO
849            ENDDO
850           ENDDO
851          ENDDO
852        CALL PLOT_FIELD_XYRL( ScatArray, 'v stress', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'v stress', myIter, myThid )
853  #endif  #endif
854    
# Line 769  C     Receive residual shortwave Line 865  C     Receive residual shortwave
865         DO bi=1,nSx         DO bi=1,nSx
866          DO j=1,sNy          DO j=1,sNy
867           DO i=1,sNx           DO i=1,sNx
868            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) +
869         &                  (1.-AREA(i,j,bi,bj) * Qsw_tmp(i,j,bi,bj)
870           ENDDO           ENDDO
871          ENDDO          ENDDO
872         ENDDO         ENDDO
873        ENDDO        ENDDO
874  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
875          DO bj=1,nSy
876           DO bi=1,nSx
877            DO j=1,sNy
878             DO i=1,sNx
879              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
880             ENDDO
881            ENDDO
882           ENDDO
883          ENDDO
884        CALL PLOT_FIELD_XYRL( ScatArray, 'shortwave', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'shortwave', myIter, myThid )
885  #endif  #endif
886    
# Line 791  C     Receive heat flux Line 897  C     Receive heat flux
897         DO bi=1,nSx         DO bi=1,nSx
898          DO j=1,sNy          DO j=1,sNy
899           DO i=1,sNx           DO i=1,sNx
900            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            fv(i,j,bi,bj) = Qsw(i,j,bi,bj) -
901         &                   AREA(i,j,bi,bj) * local(i,j,bi,bj) +
902         &               (1.-AREA(i,j,bi,bj) * Qnet_tmp(i,j,bi,bj)
903           ENDDO           ENDDO
904          ENDDO          ENDDO
905         ENDDO         ENDDO
906        ENDDO        ENDDO
907  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
908          DO bj=1,nSy
909           DO bi=1,nSx
910            DO j=1,sNy
911             DO i=1,sNx
912              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
913             ENDDO
914            ENDDO
915           ENDDO
916          ENDDO
917        CALL PLOT_FIELD_XYRL( ScatArray, 'heat flux', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'heat flux', myIter, myThid )
918  #endif  #endif
919    
# Line 813  C     Receive freshwater flux Line 930  C     Receive freshwater flux
930         DO bi=1,nSx         DO bi=1,nSx
931          DO j=1,sNy          DO j=1,sNy
932           DO i=1,sNx           DO i=1,sNx
933            ScatArray(i,j,bi,bj) = local(i,j,bi,bj)            EmPmR(i,j,bi,bj) = - rhoConstFresh *
934         &                    AREA(i,j,bi,bj) * local(i,j,bi,bj) +
935         &                (1.-AREA(i,j,bi,bj) * EmPmR_tmp(i,j,bi,bj)
936           ENDDO           ENDDO
937          ENDDO          ENDDO
938         ENDDO         ENDDO
939        ENDDO        ENDDO
940  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
941          DO bj=1,nSy
942           DO bi=1,nSx
943            DO j=1,sNy
944             DO i=1,sNx
945              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
946             ENDDO
947            ENDDO
948           ENDDO
949          ENDDO
950        CALL PLOT_FIELD_XYRL( ScatArray, 'freshwater', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'freshwater', myIter, myThid )
951  #endif  #endif
952    
# Line 835  C     Receive salt flux Line 963  C     Receive salt flux
963         DO bi=1,nSx         DO bi=1,nSx
964          DO j=1,sNy          DO j=1,sNy
965           DO i=1,sNx           DO i=1,sNx
966            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)
967           ENDDO           ENDDO
968          ENDDO          ENDDO
969         ENDDO         ENDDO
970        ENDDO        ENDDO
971  #ifdef CPL_DEBUG  #ifdef CPL_DEBUG
972          DO bj=1,nSy
973           DO bi=1,nSx
974            DO j=1,sNy
975             DO i=1,sNx
976              ScatArray(i,j,bi,bj) = local(i,j,bi,bj)
977             ENDDO
978            ENDDO
979           ENDDO
980          ENDDO
981        CALL PLOT_FIELD_XYRL( ScatArray, 'salt flux', myIter, myThid )        CALL PLOT_FIELD_XYRL( ScatArray, 'salt flux', myIter, myThid )
982  #endif  #endif
983    

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

  ViewVC Help
Powered by ViewVC 1.1.22