[Q-e-developers] Yet another way to avoid overflow in ESM.
Minoru Otani
minoru.otani at aist.go.jp
Tue Nov 3 13:29:45 CET 2015
Dear Dr. Nishihara,
Thank you for giving me a clever way to avoid the overflow. I will consider this
for all the boundary conditions.
Best regards,
Minoru
> On Nov 2, 2015, at 9:58 PM, <nisihara225 at gmail.com> <nisihara225 at gmail.com> wrote:
>
> Dear Minoru Otani,
>
> I am trying to use ESM implemented in Q.E. and reading your code (esm.f90).
> In ESM calculation, terms of “exp(x) * erfc(y)” often become overflow because of huge exp(x).
> Thus, you prepare a special subroutine “exp_erfc(x, y)” to avoid the overflow.
> Now, I have another idea to avoid the overflow, as following:
>
> Operating an unit “exp(log( ))” to “exp(x) * erfc(y)”, one can obtain
> exp(x) * erfc(y) = exp( x + log(erfc(y)) ) .
> For boundary condition bc1, bc2, and bc3, it is easy to prove “x + log(erfc(y))” has
> finite upper-bound. Thus, “exp( x + log(erfc(y)) )” does not become overflow.
> Using “exp( x + log(erfc(y)) )” instead of “exp(x) * erfc(y)” in ESM calculation,
> the overflow will be avoided. This method is accurate, not including numerical approximations.
>
> Unfortunately, I have not ensured that this method is reliable for
> exponential attenuated metal medium (bc4).
> It would be great if my idea could help you to develop ESM code.
>
> Regards,
> Satomichi Nishihara
More information about the developers
mailing list