Bonjour,
Pour aller vite, mon pb est le suivant.
Contexte:
Un programme assez costaud me cré des nanoparticules, assemblages rigides d'atomes.
Les atomes sont aglomérés pour former des polyèdres régluliers ou des morphologies s'y rapprochant.
Mes nanoparticules sont composées de deux types d'atomes: A et B.
Après avoir lancé la simulation du programme "costaud", j'obtiens ces polyèdres ou ces morphologies s'y rapporchant avec A et B répartis aléatoirement en surface et en volume.
Maintenant:
Un second programme, et c'est celui ci qui est l'objet de ce post, me calcule la concentration en surface et en volume de la nanoparticule. On considère que le volume est obtenu pout tout atome qui a une coordinence (nb de premiers voisins) égale à 12. On considère qu'on est en surface dans les autres cas: quand on a une coordinence égale à 7,8,9...<12.
Je demande à mon programme de sortir la concentration de volume et de surface en A, qui est donc le nb d'atomes de A en volume sur le nb total d'atomes en volume, et, pour la concentration de surface, le nb d'atomes de A en surface sur le nb total d'atomes en surface.
itype(1) signifie "atome A"
Ainsi la boucle ci dessous.
do i=1,natot
if(iv1(i).lt.12) then
nats=nats+1
if(itype(i).eq.1) cs=cs+1.d0
endif
if(iv1(i).eq.12) then
natcore=natcore+1
if(itype(i).eq.1) ccore=ccore+1.d0
endif
enddo
ccore=ccore/natcore
C'est dans le premier if/endif j'ai la concentration en surface de A, et dans le second j'ai la concentration en volume de A, comme vous vous en doutez.
Mais Il se trouve que j'observe parfois des nanoparticules qui ont bel et bien des atomes en volume (même s'il n'y a pas de A) et au lieu de m'écrire une concentration donc nulle, ce qu'il signifie qu'il n'y a pas de A, il écrit NaN.
Que faire pour éviter ce NaN ?
Partager