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