From what I know train() enables some modules like dropout, and eval() does the opposit.
So I would say: before you start training your model call train() and then eval() when you are done. The classic workflow would be:

call train()

epoch of training on the training set
call eval()

evaluate your model on the validation set
repeat