00001 module mrg_x2s_mct
00002
00003 use shr_kind_mod
00004 use mct_mod
00005 use seq_flds_mod
00006 use seq_flds_indices
00007 use seq_comm_mct
00008 use seq_cdata_mod
00009
00010 implicit none
00011 save
00012 private
00013
00014
00015
00016
00017
00018 public :: mrg_x2s_init_mct
00019 public :: mrg_x2s_run_mct
00020 public :: mrg_x2s_final_mct
00021
00022
00023
00024
00025
00026
00027 contains
00028
00029
00030 subroutine mrg_x2s_init_mct( cdata_s, g2x_s)
00031
00032 type(seq_cdata) ,intent(in) :: cdata_s
00033 type(mct_aVect), intent(inout) :: g2x_s
00034
00035 type(mct_GsMap), pointer :: GSMap_sno
00036 integer :: mpicom
00037
00038
00039 call seq_cdata_setptrs(cdata_s, gsMap=gsMap_sno, mpicom=mpicom)
00040
00041
00042
00043 call mct_aVect_init(g2x_s, rList=seq_flds_g2x_fields, &
00044 lsize=mct_gsMap_lsize(gsMap_sno, mpicom))
00045 call mct_aVect_zero(g2x_s)
00046
00047 end subroutine mrg_x2s_init_mct
00048
00049
00050
00051 subroutine mrg_x2s_run_mct( cdata_s, g2x_s, x2s_s )
00052
00053
00054
00055
00056
00057 type(seq_cdata), intent(in) :: cdata_s
00058 type(mct_aVect), intent(inout) :: g2x_s
00059 type(mct_aVect), intent(inout) :: x2s_s
00060
00061
00062
00063 logical :: usevector
00064
00065
00066
00067
00068 #ifdef CPP_VECTOR
00069 usevector = .true.
00070 #else
00071 usevector = .false.
00072 #endif
00073
00074 call mct_aVect_copy(aVin=g2x_s, aVout=x2s_s, vector=usevector)
00075
00076 end subroutine mrg_x2s_run_mct
00077
00078
00079
00080 subroutine mrg_x2s_final_mct
00081
00082
00083
00084 end subroutine mrg_x2s_final_mct
00085
00086 end module mrg_x2s_mct
00087
00088