package HackaMol::Roles::QmAtomRole;
$HackaMol::Roles::QmAtomRole::VERSION = '0.051';
#ABSTRACT: simple role that provides attributes needed for setting up quantum chemistry calculations
use Moose::Role;
has 'basis' => (
is => 'rw',
isa => 'Str',
predicate => 'has_basis',
clearer => 'clear_basis',
lazy => 1,
default => '6-31+G*', #to provide example; EMSL Str can be many lines...
);
has 'ecp' => (
is => 'rw',
isa => 'Str',
clearer => 'clear_ecp',
predicate => 'has_ecp',
);
has 'basis_geom', is => 'rw', isa => 'Str';
has 'dummy' => (
is => 'rw',
isa => 'Str',
predicate => 'is_dummy',
clearer => 'clear_dummy',
);
no Moose::Role;
1;
__END__
=pod
=head1 NAME
HackaMol::Roles::QmAtomRole - simple role that provides attributes needed for setting up quantum chemistry calculations
=head1 VERSION
version 0.051
=head1 SYNOPSIS
# instance of class that consumes the QmRole.
$obj->basis_geom('spherical');
$obj->basis_geom('cartesian');
$obj->dummy('bq');
print "dummy! " if $obj->is_dummy;
$obj->clear_dummy;
print "not dummy! " unless $obj->is_dummy;
$obj->basis('SDD');
$obj->ecp('SDD');
=head1 DESCRIPTION
QmAtomRole provides attributes that will be useful for setting up interfaces to quantum chemistry
packages. All attributes are 'rw' and lazy, so they will not contaminate the namespace unless
called upon. The functionality for QM calculations is extended in the QmMolRole.
I have used earlier versions of these roles to load basis_sets and effective core potentials
downloaded from the EMSL basis set exchange as a single Str. https://bse.pnl.gov/bse/portal
A dream is to interface with EMSL library directly.
=head1 ATTRIBUTES
=head2 basis_geom
isa Str that is lazy and rw
=head2 dummy
isa Str that is lazy and rw
=head2 basis
isa Str that is lazy and rw
=head2 ecp
isa Str that is lazy and rw
=head1 SEE ALSO
=over 4
=item *
L<HackaMol::Atom>
=item *
L<EMSL | https://bse.pnl.gov/bse/portal>
=back
=head1 AUTHOR
Demian Riccardi <demianriccardi@gmail.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Demian Riccardi.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut