Message Boards Message Boards


IsotopeData[0] Does Not Give { neutron }.

Posted 9 years ago
5 Replies
0 Total Likes

IsotopeData is very useful for building a table of nuclides.

However, it is very inconvenient for including the neutron.

For example, IsotopeData[1] gives a list of 7 entities including the proton, deuterium, tritium, etc. to 7H. IsotopeData[2] gives a list of 2He to 10He, and so on for similar isotopes. However, IsotopeData[0] does not give a list of entities (that is 1 member long): { neutron }.

This is not because IsotopeData doesn't know about the neutron. Observe that IsotopeData[{0,1}] evaluates to Entity["Isotope", "Neutron"], which can be probed in all of the usual ways.

The only way I have been able to get around this is by coding a lot of special-case handling for the neutron. For example:

During evaluation of In[123]:= IsotopeData::notent: 0 is not a known entity, class, or tag for IsotopeData. Use IsotopeData[] for a list of entities. 
(* Evaluates to IsotopeData[0], compare with *)
(* which gives a nice list of hydrogen isotopes. *)    
IsotopeData[{0,1}] (* gives the desired entity. *)

(* No neutron: *)
nuclides = Flatten[Table[{z, a}, {z, 1, maxZ}, {a, IsotopeData[#, "MassNumber"] & /@ IsotopeData[z]}], 1];
(* With neutron: *)
nuclidesN = Flatten[Table[{z, a}, {z, 0, maxZ}, {a, IsotopeData[#, "MassNumber"] & /@ If[z == 0, {IsotopeData[{0, 1}]}, IsotopeData[z]]}], 1];

My question is: is this an oversight, or intentional? It seems that if Mma knows that 0! = 1, it should also know that IsotopeData[0] = { neutron } : ). [Also, there's a chance that the tetraneutron is bound (though the evidence hasn't been independently reproduced).]

Otherwise: is there a more elegant way to go about including the neutron?

POSTED BY: Evan Berkowitz
5 Replies

Oops, you're right. I stand corrected--actually I am sitting, but I am corrected nonetheless.

POSTED BY: David Reiss
Posted 9 years ago

It is a documented form. Under "details" on the documentation you linked the third bullet is:

IsotopeData["name"] or IsotopeData[Z] gives a list of all known isotopes of the element with the specified name or atomic number.

... and I guess I should concede that atomic-physicist sticklers might question the neutron's place in IsotopeData, but nuclear-physicist sticklers (myself included) know it's place on the chart of the nuclides.

POSTED BY: Evan Berkowitz

It is probably worth noting that the form


is not a documented form ( and that the defined and thus supported form is


But I agree that if IsotopeData[1] yields the isotopes of Hydrogen then IsotopeData[0] should perhaps yield "neutronium", though sticklers for nomenclature may argue that an element should only be one with possible electrons in its configuration.

POSTED BY: David Reiss
Posted 9 years ago

That's absolutely true, of course. But it seems like this functionality should be native.

POSTED BY: Evan Berkowitz

It will be much easier to handle this by defining your own isotopeData function. Something along the lines of

isotopeData[0] = {Entity["Isotope", "Neutron"]}
isotopeData[x___] := IsotopeData[x]

plus any other cases that you might need for the neutron.

This is easier than having many Ifs.

POSTED BY: Szabolcs Horvát
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract