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 |
#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 |
DO bj=1,nSy |
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 |
672 |
ENDIF |
ENDIF |
673 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
674 |
CALL SCATTER_2D( xfer_array, local, myThid ) |
CALL SCATTER_2D( xfer_array, local, myThid ) |
675 |
|
DO bj=1,nSy |
676 |
|
DO bi=1,nSx |
677 |
|
DO j=1,sNy |
678 |
|
DO i=1,sNx |
679 |
|
AREA(i,j,bi,bj) = local(i,j,bi,bj) |
680 |
|
ENDDO |
681 |
|
ENDDO |
682 |
|
ENDDO |
683 |
|
ENDDO |
684 |
|
|
685 |
#ifdef CPL_DEBUG |
#ifdef CPL_DEBUG |
686 |
DO bj=1,nSy |
DO bj=1,nSy |
687 |
DO bi=1,nSx |
DO bi=1,nSx |
704 |
ENDIF |
ENDIF |
705 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
706 |
CALL SCATTER_2D( xfer_array, local, myThid ) |
CALL SCATTER_2D( xfer_array, local, myThid ) |
707 |
|
DO bj=1,nSy |
708 |
|
DO bi=1,nSx |
709 |
|
DO j=1,sNy |
710 |
|
DO i=1,sNx |
711 |
|
HEFF(i,j,bi,bj) = local(i,j,bi,bj) |
712 |
|
ENDDO |
713 |
|
ENDDO |
714 |
|
ENDDO |
715 |
|
ENDDO |
716 |
#ifdef CPL_DEBUG |
#ifdef CPL_DEBUG |
717 |
DO bj=1,nSy |
DO bj=1,nSy |
718 |
DO bi=1,nSx |
DO bi=1,nSx |
735 |
ENDIF |
ENDIF |
736 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
737 |
CALL SCATTER_2D( xfer_array, local, myThid ) |
CALL SCATTER_2D( xfer_array, local, myThid ) |
738 |
|
DO bj=1,nSy |
739 |
|
DO bi=1,nSx |
740 |
|
DO j=1,sNy |
741 |
|
DO i=1,sNx |
742 |
|
HSALT(i,j,bi,bj) = local(i,j,bi,bj) |
743 |
|
ENDDO |
744 |
|
ENDDO |
745 |
|
ENDDO |
746 |
|
ENDDO |
747 |
#ifdef CPL_DEBUG |
#ifdef CPL_DEBUG |
748 |
DO bj=1,nSy |
DO bj=1,nSy |
749 |
DO bi=1,nSx |
DO bi=1,nSx |
766 |
ENDIF |
ENDIF |
767 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
768 |
CALL SCATTER_2D( xfer_array, local, myThid ) |
CALL SCATTER_2D( xfer_array, local, myThid ) |
769 |
|
DO bj=1,nSy |
770 |
|
DO bi=1,nSx |
771 |
|
DO j=1,sNy |
772 |
|
DO i=1,sNx |
773 |
|
HSNOW(i,j,bi,bj) = local(i,j,bi,bj) |
774 |
|
ENDDO |
775 |
|
ENDDO |
776 |
|
ENDDO |
777 |
|
ENDDO |
778 |
#ifdef CPL_DEBUG |
#ifdef CPL_DEBUG |
779 |
DO bj=1,nSy |
DO bj=1,nSy |
780 |
DO bi=1,nSx |
DO bi=1,nSx |
797 |
ENDIF |
ENDIF |
798 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
799 |
CALL SCATTER_2D( xfer_array, local, myThid ) |
CALL SCATTER_2D( xfer_array, local, myThid ) |
800 |
|
DO bj=1,nSy |
801 |
|
DO bi=1,nSx |
802 |
|
DO j=1,sNy |
803 |
|
DO i=1,sNx |
804 |
|
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 |
807 |
|
ENDDO |
808 |
|
ENDDO |
809 |
|
ENDDO |
810 |
#ifdef CPL_DEBUG |
#ifdef CPL_DEBUG |
811 |
DO bj=1,nSy |
DO bj=1,nSy |
812 |
DO bi=1,nSx |
DO bi=1,nSx |
829 |
ENDIF |
ENDIF |
830 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
831 |
CALL SCATTER_2D( xfer_array, local, myThid ) |
CALL SCATTER_2D( xfer_array, local, myThid ) |
832 |
|
DO bj=1,nSy |
833 |
|
DO bi=1,nSx |
834 |
|
DO j=1,sNy |
835 |
|
DO i=1,sNx |
836 |
|
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 |
839 |
|
ENDDO |
840 |
|
ENDDO |
841 |
|
ENDDO |
842 |
#ifdef CPL_DEBUG |
#ifdef CPL_DEBUG |
843 |
DO bj=1,nSy |
DO bj=1,nSy |
844 |
DO bi=1,nSx |
DO bi=1,nSx |
861 |
ENDIF |
ENDIF |
862 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
863 |
CALL SCATTER_2D( xfer_array, local, myThid ) |
CALL SCATTER_2D( xfer_array, local, myThid ) |
864 |
|
DO bj=1,nSy |
865 |
|
DO bi=1,nSx |
866 |
|
DO j=1,sNy |
867 |
|
DO i=1,sNx |
868 |
|
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 |
871 |
|
ENDDO |
872 |
|
ENDDO |
873 |
|
ENDDO |
874 |
#ifdef CPL_DEBUG |
#ifdef CPL_DEBUG |
875 |
DO bj=1,nSy |
DO bj=1,nSy |
876 |
DO bi=1,nSx |
DO bi=1,nSx |
893 |
ENDIF |
ENDIF |
894 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
895 |
CALL SCATTER_2D( xfer_array, local, myThid ) |
CALL SCATTER_2D( xfer_array, local, myThid ) |
896 |
|
DO bj=1,nSy |
897 |
|
DO bi=1,nSx |
898 |
|
DO j=1,sNy |
899 |
|
DO i=1,sNx |
900 |
|
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 |
904 |
|
ENDDO |
905 |
|
ENDDO |
906 |
|
ENDDO |
907 |
#ifdef CPL_DEBUG |
#ifdef CPL_DEBUG |
908 |
DO bj=1,nSy |
DO bj=1,nSy |
909 |
DO bi=1,nSx |
DO bi=1,nSx |
926 |
ENDIF |
ENDIF |
927 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
928 |
CALL SCATTER_2D( xfer_array, local, myThid ) |
CALL SCATTER_2D( xfer_array, local, myThid ) |
929 |
|
DO bj=1,nSy |
930 |
|
DO bi=1,nSx |
931 |
|
DO j=1,sNy |
932 |
|
DO i=1,sNx |
933 |
|
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 |
937 |
|
ENDDO |
938 |
|
ENDDO |
939 |
|
ENDDO |
940 |
#ifdef CPL_DEBUG |
#ifdef CPL_DEBUG |
941 |
DO bj=1,nSy |
DO bj=1,nSy |
942 |
DO bi=1,nSx |
DO bi=1,nSx |
959 |
ENDIF |
ENDIF |
960 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
961 |
CALL SCATTER_2D( xfer_array, local, myThid ) |
CALL SCATTER_2D( xfer_array, local, myThid ) |
962 |
|
DO bj=1,nSy |
963 |
|
DO bi=1,nSx |
964 |
|
DO j=1,sNy |
965 |
|
DO i=1,sNx |
966 |
|
saltFlux(i,j,bi,bj) = - AREA(i,j,bi,bj) * local(i,j,bi,bj) |
967 |
|
ENDDO |
968 |
|
ENDDO |
969 |
|
ENDDO |
970 |
|
ENDDO |
971 |
#ifdef CPL_DEBUG |
#ifdef CPL_DEBUG |
972 |
DO bj=1,nSy |
DO bj=1,nSy |
973 |
DO bi=1,nSx |
DO bi=1,nSx |