Kentaro
Thanks for rewriting the code in Fortran 90! The Fortran 77 parts of the Einstein Toolkit should slowly be converted to Fortran 90 anyway.
I notice that you made several changes to the code when converting:
(1) You introduce a local array var, which is a copy of the input variable
(2) You rewrote the do loops with array expressions
Both are not good for performance. The former is certainly slowing things down, the second complicates an OpenMP parallelisation and makes the code more difficult to read. I am therefore hesitant to apply these. Did you try making only one of these changes, to see whether this would suffice?
The document to which you pointed contains also the suggestion to use the option -fp-model-precise. Did you try this?
As a side remark, in Fortran 90 you can also use a select case statement instead of if statements to choose the dissipation order.
-erik