Dear all,
In my MD simulation system, I have 2 sets of moleculse that need to added a external force, how to deal with that, can I write such a perl script as below?
#!perl
use strict;
use Math::Trig;
use Getopt::Long;
use MaterialsScript qw(:all);
my \\\$doc = \\\$Documents{"MFI5.xsd"};
my \\\$totalTime = 400;
my \\\$interval = 4;
my \\\$period = 800;
my \\\$forceAmplitude = 69.92; # kcal/mol/A
my \\\$forcite = Modules->Forcite;
my \\\$dynamics = \\\$forcite->Dynamics;
Modules->Forcite->ChangeSettings([Ensemble3D => "NVT",
Temperature => 348,
TimeStep=> 2,
EnergyDeviation=> 500000,
NumberOfSteps=>2000,
TrajectoryFrequency=>500,
Thermostat=>"Berendsen",
CurrentForcefield=>"Dreiding",
Quality=>"Coarse",
ChargeAssignment=>"Use current",
"3DPeriodicElectrostaticSummationMethod"=>"Atom based",
]);
my \\\$xtd = \\\$dynamics->Run(\\\$doc, Settings(NumberOfSteps => 1))->Trajectory;
Modules->Forcite->ChangeSettings(Settings(
TrajectoryRestart => "Yes",
AppendTrajectory => "Yes"));
for(my \\\$time = 0; \\\$time < \\\$totalTime; \\\$time += \\\$interval)
{
my \\\$force = \\\$forceAmplitude*sin(\\\$time/\\\$period*2*pi);
my \\\$externalForceStrength = \\\$force ;
my \\\$results = \\\$dynamics->Run(\\\$xtd, Settings(
ExternalForceSet => "Top",
ExternalForceStrength => \\\$externalForceStrength,
ExternalForceX=>0,
ExternalForceY=>-1,
ExternalForceZ=>0,
ExternalForceSet => "Bottom",
ExternalForceStrength => \\\$externalForceStrength,
ExternalForceX=>0,
ExternalForceY=>1,
ExternalForceZ=>0,
));
}
Thank.
Best regards,
Yours
CHENG Xu
In my MD simulation system, I have 2 sets of moleculse that need to added a external force, how to deal with that, can I write such a perl script as below?
#!perl
use strict;
use Math::Trig;
use Getopt::Long;
use MaterialsScript qw(:all);
my \\\$doc = \\\$Documents{"MFI5.xsd"};
my \\\$totalTime = 400;
my \\\$interval = 4;
my \\\$period = 800;
my \\\$forceAmplitude = 69.92; # kcal/mol/A
my \\\$forcite = Modules->Forcite;
my \\\$dynamics = \\\$forcite->Dynamics;
Modules->Forcite->ChangeSettings([Ensemble3D => "NVT",
Temperature => 348,
TimeStep=> 2,
EnergyDeviation=> 500000,
NumberOfSteps=>2000,
TrajectoryFrequency=>500,
Thermostat=>"Berendsen",
CurrentForcefield=>"Dreiding",
Quality=>"Coarse",
ChargeAssignment=>"Use current",
"3DPeriodicElectrostaticSummationMethod"=>"Atom based",
]);
my \\\$xtd = \\\$dynamics->Run(\\\$doc, Settings(NumberOfSteps => 1))->Trajectory;
Modules->Forcite->ChangeSettings(Settings(
TrajectoryRestart => "Yes",
AppendTrajectory => "Yes"));
for(my \\\$time = 0; \\\$time < \\\$totalTime; \\\$time += \\\$interval)
{
my \\\$force = \\\$forceAmplitude*sin(\\\$time/\\\$period*2*pi);
my \\\$externalForceStrength = \\\$force ;
my \\\$results = \\\$dynamics->Run(\\\$xtd, Settings(
ExternalForceSet => "Top",
ExternalForceStrength => \\\$externalForceStrength,
ExternalForceX=>0,
ExternalForceY=>-1,
ExternalForceZ=>0,
ExternalForceSet => "Bottom",
ExternalForceStrength => \\\$externalForceStrength,
ExternalForceX=>0,
ExternalForceY=>1,
ExternalForceZ=>0,
));
}
Thank.
Best regards,
Yours
CHENG Xu
