#!/usr/bin/env perl use Modern::Perl; use Math::Trig; use HackaMol; my $radius = shift || 16; my $oxy = HackaMol::Atom->new( Z => 8 ); my $hyd = HackaMol::Atom->new( Z => 1 ); my $mass = $oxy->mass + 2 * $hyd->mass; my $rho = 1.0; say "H2O g/mol: $mass"; say "H2O mol/L:", $rho * 1000 / $mass; # g/cm3 * cm3/L * mol/g say "H2O molar (moles/mL): ", $rho * 1 * 1 / $mass; # g/cm3 * cm3/ml * mol/g my $cm_ang = 100 / 10E9; say "cm/ang :", $cm_ang; my $Na = 6.02214179E+23; say "rho (molecules/ang^3): ", ( $rho / $mass ) * ( $cm_ang**3 ) * $Na; # g/cm3 * mol/g * cm3/ang3 * molecules/mol my $natoms = int( 0.0334 * ( $radius**3 ) * 4 * pi / 3 ); say "$natoms in radius $radius Angstroms";