==========================================================================

 subroutine gcm_vert_diff_init(Tri_surf, idim, jdim, kdim, &
                               conserve_energy, 
			       use_virtual_temp_vert_diff,
			       do_mcm_plev)
 
    integer, intent(in)  :: idim, jdim, kdim 
        the three "global" dimensions of the fields to be diffused,
        with kdim being the number of vertical levels;
        "global" refers to the entire field residing on a processor

    type(surf_diff_type),