Jaka jest wyraźna różnica między zamiarami fortran (in, out, inout)?

Po chwili szukania w książkach, tutaj na stackoverflow i ogólnie w Internecie, odkryłem, że trudno jest znaleźć proste wyjaśnienie rzeczywistych różnic między intencjami argumentów fortran. Sposób, w jaki to zrozumiałem, jest następujący:

intent(in) - Rzeczywisty argument jest kopiowany do fikcyjnego argumentu przy wpisie.intent(out) - Fikcyjny argument wskazuje na rzeczywisty argument (oba wskazują na to samo miejsce w pamięci).intent(inout) - fałszywy argument jest tworzony lokalnie, a następnie kopiowany do rzeczywistego argumentu po zakończeniu procedury.

Jeśli moje zrozumienie jest poprawne, to chcę również wiedzieć, dlaczego ktoś zawsze chce korzystaćintent(out), ponieważintent(inout) wymaga mniej pracy (bez kopiowania danych).