:param comm_create_func: the function used to create the new communicator
:param comm_create_func: the function used to create the new communicator
:param name: name of the communicator variable
:param name: name of the communicator variable
:return: instruction block with name "comm_create" that will initialize the communicator with the given initialization function,
:return Tuple InstructionBlock, InstructionBlock: instruction block with name "comm_create" that will initialize the communicator with the given initialization function,
does include the allocation of a stack variable with the procided name for the communicator also includes a "intercomm_base_comm, that is not freed
does include the allocation of a stack variable with the provided name for the communicator