| 8 |
|
#include "UseTheForce/ForceFields.hpp" |
| 9 |
|
#include "primitives/SRI.hpp" |
| 10 |
|
#include "utils/simError.h" |
| 11 |
< |
|
| 12 |
< |
#include "UseTheForce/fortranWrappers.hpp" |
| 11 |
> |
#include "types/DirectionalAtomType.hpp" |
| 12 |
> |
#include "UseTheForce/DarkSide/lj_interface.h" |
| 13 |
> |
#include "UseTheForce/DarkSide/dipole_interface.h" |
| 14 |
> |
#include "UseTheForce/DarkSide/sticky_interface.h" |
| 15 |
|
|
| 16 |
|
#ifdef IS_MPI |
| 17 |
|
#include "UseTheForce/mpiForceField.h" |
| 467 |
|
currentBendType = NULL; |
| 468 |
|
headTorsionType = NULL; |
| 469 |
|
currentTorsionType = NULL; |
| 468 |
– |
|
| 469 |
– |
// do the funtion wrapping |
| 470 |
– |
wrapMeFF( this ); |
| 470 |
|
|
| 471 |
|
|
| 472 |
|
#ifdef IS_MPI |
| 652 |
|
} |
| 653 |
|
|
| 654 |
|
|
| 655 |
< |
void DUFF::initForceField( int ljMixRule ){ |
| 655 |
> |
void DUFF::initForceField(){ |
| 656 |
|
|
| 657 |
< |
initFortran( ljMixRule, entry_plug->useReactionField ); |
| 657 |
> |
initFortran( entry_plug->useReactionField ); |
| 658 |
|
} |
| 660 |
– |
|
| 661 |
– |
double DUFF::getAtomTypeMass (char* atomType) { |
| 662 |
– |
|
| 663 |
– |
currentAtomType = headAtomType->find( atomType ); |
| 664 |
– |
if( currentAtomType == NULL ){ |
| 665 |
– |
sprintf( painCave.errMsg, |
| 666 |
– |
"AtomType error, %s not found in force file.\n", |
| 667 |
– |
atomType ); |
| 668 |
– |
painCave.isFatal = 1; |
| 669 |
– |
simError(); |
| 670 |
– |
} |
| 659 |
|
|
| 672 |
– |
return currentAtomType->mass; |
| 673 |
– |
} |
| 660 |
|
|
| 661 |
|
void DUFF::readParams( void ){ |
| 662 |
|
|
| 663 |
< |
int identNum; |
| 663 |
> |
int identNum, isError; |
| 664 |
|
|
| 665 |
|
atomStruct atomInfo; |
| 666 |
|
bondStruct bondInfo; |
| 667 |
|
bendStruct bendInfo; |
| 668 |
|
torsionStruct torsionInfo; |
| 669 |
+ |
|
| 670 |
+ |
AtomType* at; |
| 671 |
|
|
| 672 |
|
bigSigma = 0.0; |
| 673 |
|
|
| 768 |
|
} |
| 769 |
|
|
| 770 |
|
#endif // is_mpi |
| 771 |
< |
|
| 772 |
< |
|
| 773 |
< |
|
| 786 |
< |
// call new A_types in fortran |
| 787 |
< |
|
| 788 |
< |
int isError; |
| 789 |
< |
|
| 790 |
< |
// dummy variables |
| 791 |
< |
|
| 792 |
< |
int isGB = 0; |
| 793 |
< |
int isLJ = 1; |
| 794 |
< |
int isEAM =0; |
| 795 |
< |
int isCharge = 0; |
| 796 |
< |
double charge=0.0; |
| 797 |
< |
|
| 771 |
> |
|
| 772 |
> |
// dummy variables |
| 773 |
> |
|
| 774 |
|
currentAtomType = headAtomType->next;; |
| 775 |
< |
while( currentAtomType != NULL ){ |
| 776 |
< |
|
| 777 |
< |
if(currentAtomType->isDipole) entry_plug->useDipoles = 1; |
| 778 |
< |
if(currentAtomType->isSSD) { |
| 779 |
< |
entry_plug->useSticky = 1; |
| 780 |
< |
set_sticky_params( &(currentAtomType->w0), &(currentAtomType->v0), |
| 781 |
< |
&(currentAtomType->v0p), |
| 782 |
< |
&(currentAtomType->rl), &(currentAtomType->ru), |
| 783 |
< |
&(currentAtomType->rlp), &(currentAtomType->rup)); |
| 775 |
> |
while( currentAtomType != NULL ){ |
| 776 |
> |
|
| 777 |
> |
if( currentAtomType->name[0] != '\0' ){ |
| 778 |
> |
|
| 779 |
> |
if (currentAtomType->isSSD || currentAtomType->isDipole) |
| 780 |
> |
DirectionalAtomType* at = new DirectionalAtomType(); |
| 781 |
> |
else |
| 782 |
> |
AtomType* at = new AtomType(); |
| 783 |
> |
|
| 784 |
> |
if (currentAtomType->isSSD) { |
| 785 |
> |
((DirectionalAtomType*)at)->setSticky(); |
| 786 |
> |
entry_plug->useSticky = 1; |
| 787 |
> |
} |
| 788 |
> |
|
| 789 |
> |
if (currentAtomType->isDipole) { |
| 790 |
> |
((DirectionalAtomType*)at)->setDipole(); |
| 791 |
> |
entry_plug->useDipoles = 1; |
| 792 |
> |
} |
| 793 |
> |
|
| 794 |
> |
at->setIdent(currentAtomType->ident); |
| 795 |
> |
at->setName(currentAtomType->name); |
| 796 |
> |
at->setLennardJones(); |
| 797 |
> |
at->complete(); |
| 798 |
|
} |
| 799 |
+ |
currentAtomType = currentAtomType->next; |
| 800 |
+ |
} |
| 801 |
+ |
|
| 802 |
+ |
currentAtomType = headAtomType->next;; |
| 803 |
+ |
while( currentAtomType != NULL ){ |
| 804 |
|
|
| 805 |
|
if( currentAtomType->name[0] != '\0' ){ |
| 806 |
|
isError = 0; |
| 807 |
< |
makeAtype( &(currentAtomType->ident), |
| 808 |
< |
&isLJ, |
| 814 |
< |
&(currentAtomType->isSSD), |
| 815 |
< |
&(currentAtomType->isDipole), |
| 816 |
< |
&isGB, |
| 817 |
< |
&isEAM, |
| 818 |
< |
&isCharge, |
| 819 |
< |
&(currentAtomType->epslon), |
| 820 |
< |
&(currentAtomType->sigma), |
| 821 |
< |
&charge, |
| 822 |
< |
&(currentAtomType->dipole), |
| 823 |
< |
&isError ); |
| 807 |
> |
newLJtype( &(currentAtomType->ident), &(currentAtomType->sigma), |
| 808 |
> |
&(currentAtomType->epslon), &isError); |
| 809 |
|
if( isError ){ |
| 810 |
< |
sprintf( painCave.errMsg, |
| 811 |
< |
"Error initializing the \"%s\" atom type in fortran\n", |
| 812 |
< |
currentAtomType->name ); |
| 813 |
< |
painCave.isFatal = 1; |
| 814 |
< |
simError(); |
| 810 |
> |
sprintf( painCave.errMsg, |
| 811 |
> |
"Error initializing the \"%s\" LJ type in fortran\n", |
| 812 |
> |
currentAtomType->name ); |
| 813 |
> |
painCave.isFatal = 1; |
| 814 |
> |
simError(); |
| 815 |
|
} |
| 816 |
+ |
|
| 817 |
+ |
if (currentAtomType->isDipole) { |
| 818 |
+ |
newDipoleType(&(currentAtomType->ident), &(currentAtomType->dipole), |
| 819 |
+ |
&isError); |
| 820 |
+ |
if( isError ){ |
| 821 |
+ |
sprintf( painCave.errMsg, |
| 822 |
+ |
"Error initializing the \"%s\" dipole type in fortran\n", |
| 823 |
+ |
currentAtomType->name ); |
| 824 |
+ |
painCave.isFatal = 1; |
| 825 |
+ |
simError(); |
| 826 |
+ |
} |
| 827 |
+ |
} |
| 828 |
+ |
|
| 829 |
+ |
if(currentAtomType->isSSD) { |
| 830 |
+ |
makeStickyType( &(currentAtomType->w0), &(currentAtomType->v0), |
| 831 |
+ |
&(currentAtomType->v0p), |
| 832 |
+ |
&(currentAtomType->rl), &(currentAtomType->ru), |
| 833 |
+ |
&(currentAtomType->rlp), &(currentAtomType->rup)); |
| 834 |
+ |
} |
| 835 |
+ |
|
| 836 |
|
} |
| 837 |
|
currentAtomType = currentAtomType->next; |
| 838 |
|
} |
| 1096 |
|
|
| 1097 |
|
#endif // is_mpi |
| 1098 |
|
|
| 1099 |
< |
entry_plug->useLJ = 1; |
| 1099 |
> |
entry_plug->useLennardJones = 1; |
| 1100 |
|
} |
| 1101 |
|
|
| 1102 |
|
|