Import Geant4 10.0.0 source tree
This commit is contained in:
@@ -25,159 +25,160 @@
|
||||
/// @file G4MPImessenger.cc
|
||||
/// @brief Define MPI commands
|
||||
|
||||
#include "G4MPImessenger.hh"
|
||||
#include "G4MPImanager.hh"
|
||||
#include "G4VMPIseedGenerator.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UIcmdWithoutParameter.hh"
|
||||
#include "mpi.h"
|
||||
#include <sstream>
|
||||
#include "G4UIcmdWithADouble.hh"
|
||||
#include "G4UIcmdWithAnInteger.hh"
|
||||
#include "G4UIcmdWithAString.hh"
|
||||
#include "G4UIcmdWithADouble.hh"
|
||||
#include "G4UIcmdWithoutParameter.hh"
|
||||
#include "G4UIcommand.hh"
|
||||
#include "G4UIdirectory.hh"
|
||||
#include "G4UImanager.hh"
|
||||
#include "G4UIparameter.hh"
|
||||
#include <sstream>
|
||||
#include "G4MPImanager.hh"
|
||||
#include "G4MPImessenger.hh"
|
||||
#include "G4VMPIseedGenerator.hh"
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
G4MPImessenger::G4MPImessenger( G4MPImanager* manager)
|
||||
: G4UImessenger(), g4MPI(manager)
|
||||
G4MPImessenger::G4MPImessenger()
|
||||
: G4UImessenger()
|
||||
{
|
||||
// /mpi
|
||||
dir = new G4UIdirectory("/mpi/");
|
||||
dir-> SetGuidance("MPI control commands");
|
||||
dir_ = new G4UIdirectory("/mpi/");
|
||||
dir_-> SetGuidance("MPI control commands");
|
||||
|
||||
// /mpi/verbose
|
||||
verbose = new G4UIcmdWithAnInteger("/mpi/verbose", this);
|
||||
verbose-> SetGuidance("Set verbose level.");
|
||||
verbose-> SetParameterName("verbose", false, false);
|
||||
verbose->SetRange("verbose>=0 && verbose<=1");
|
||||
verbose_ = new G4UIcmdWithAnInteger("/mpi/verbose", this);
|
||||
verbose_-> SetGuidance("Set verbose level.");
|
||||
verbose_-> SetParameterName("verbose", false, false);
|
||||
verbose_->SetRange("verbose>=0 && verbose<=1");
|
||||
|
||||
// /mpi/status
|
||||
status = new G4UIcmdWithoutParameter("/mpi/status", this);
|
||||
status-> SetGuidance( "Show mpi status.");
|
||||
status_ = new G4UIcmdWithoutParameter("/mpi/status", this);
|
||||
status_-> SetGuidance( "Show mpi status.");
|
||||
|
||||
// /mpi/execute
|
||||
execute = new G4UIcmdWithAString("/mpi/execute", this);
|
||||
execute-> SetGuidance("Execute a macro file. (=/control/execute)");
|
||||
execute-> SetParameterName("fileName", false, false);
|
||||
execute_ = new G4UIcmdWithAString("/mpi/execute", this);
|
||||
execute_-> SetGuidance("Execute a macro file. (=/control/execute)");
|
||||
execute_-> SetParameterName("fileName", false, false);
|
||||
|
||||
// /mpi/beamOn
|
||||
beamOn = new G4UIcommand("/mpi/beamOn", this);
|
||||
beamOn-> SetGuidance("Start a parallel run w/ thread.");
|
||||
beam_on_ = new G4UIcommand("/mpi/beamOn", this);
|
||||
beam_on_-> SetGuidance("Start a parallel run w/ thread.");
|
||||
|
||||
G4UIparameter* p1= new G4UIparameter("numberOfEvent", 'i', true);
|
||||
p1-> SetDefaultValue(1);
|
||||
p1-> SetParameterRange("numberOfEvent>=0");
|
||||
beamOn-> SetParameter(p1);
|
||||
beam_on_-> SetParameter(p1);
|
||||
|
||||
G4UIparameter* p2= new G4UIparameter("divide", 'b', true);
|
||||
p2-> SetDefaultValue(true);
|
||||
beamOn-> SetParameter(p2);
|
||||
beam_on_-> SetParameter(p2);
|
||||
|
||||
// /mpi/.beamOn
|
||||
dotbeamOn = new G4UIcommand("/mpi/.beamOn", this);
|
||||
dotbeamOn-> SetGuidance("Start a parallel run w/o thread.");
|
||||
dot_beam_on_ = new G4UIcommand("/mpi/.beamOn", this);
|
||||
dot_beam_on_-> SetGuidance("Start a parallel run w/o thread.");
|
||||
|
||||
p1= new G4UIparameter("numberOfEvent", 'i', true);
|
||||
p1-> SetDefaultValue(1);
|
||||
p1-> SetParameterRange("numberOfEvent>=0");
|
||||
dotbeamOn-> SetParameter(p1);
|
||||
dot_beam_on_-> SetParameter(p1);
|
||||
|
||||
p2= new G4UIparameter("divide", 'b', true);
|
||||
p2-> SetDefaultValue(true);
|
||||
dotbeamOn-> SetParameter(p2);
|
||||
dot_beam_on_-> SetParameter(p2);
|
||||
|
||||
// /mpi/weightForMaster
|
||||
masterWeight = new G4UIcmdWithADouble("/mpi/masterWeight", this);
|
||||
masterWeight-> SetGuidance("Set weight for master node.");
|
||||
masterWeight-> SetParameterName("weight", false, false);
|
||||
masterWeight-> SetRange("weight>=0. && weight<=1.");
|
||||
master_weight_ = new G4UIcmdWithADouble("/mpi/masterWeight", this);
|
||||
master_weight_-> SetGuidance("Set weight for master node.");
|
||||
master_weight_-> SetParameterName("weight", false, false);
|
||||
master_weight_-> SetRange("weight>=0. && weight<=1.");
|
||||
|
||||
// /mpi/showSeeds
|
||||
showSeeds = new G4UIcmdWithoutParameter("/mpi/showSeeds", this);
|
||||
showSeeds-> SetGuidance("Show seeds of MPI nodes.");
|
||||
show_seeds_ = new G4UIcmdWithoutParameter("/mpi/showSeeds", this);
|
||||
show_seeds_-> SetGuidance("Show seeds of MPI nodes.");
|
||||
|
||||
// /mpi/setMasterSeed
|
||||
setMasterSeed = new G4UIcmdWithAnInteger("/mpi/setMasterSeed", this);
|
||||
setMasterSeed-> SetGuidance("Set a master seed for the seed generator.");
|
||||
setMasterSeed-> SetParameterName("seed", false, false);
|
||||
set_master_seed_ = new G4UIcmdWithAnInteger("/mpi/setMasterSeed", this);
|
||||
set_master_seed_-> SetGuidance("Set a master seed for the seed generator.");
|
||||
set_master_seed_-> SetParameterName("seed", false, false);
|
||||
|
||||
// /mpi/setSeed
|
||||
setSeed = new G4UIcommand("/mpi/setSeed", this);
|
||||
setSeed-> SetGuidance("Set a seed for a specified node.");
|
||||
set_seed_ = new G4UIcommand("/mpi/setSeed", this);
|
||||
set_seed_-> SetGuidance("Set a seed for a specified node.");
|
||||
|
||||
p1 = new G4UIparameter("node", 'i', false);
|
||||
p1-> SetParameterRange("node>=0");
|
||||
setSeed-> SetParameter(p1);
|
||||
set_seed_-> SetParameter(p1);
|
||||
|
||||
p2 = new G4UIparameter("seed", 'i', false);
|
||||
setSeed-> SetParameter(p2);
|
||||
set_seed_-> SetParameter(p2);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
G4MPImessenger::~G4MPImessenger()
|
||||
{
|
||||
delete verbose;
|
||||
delete status;
|
||||
delete execute;
|
||||
delete beamOn;
|
||||
delete dotbeamOn;
|
||||
delete masterWeight;
|
||||
delete showSeeds;
|
||||
delete setMasterSeed;
|
||||
delete setSeed;
|
||||
delete verbose_;
|
||||
delete status_;
|
||||
delete execute_;
|
||||
delete beam_on_;
|
||||
delete dot_beam_on_;
|
||||
delete master_weight_;
|
||||
delete show_seeds_;
|
||||
delete set_master_seed_;
|
||||
delete set_seed_;
|
||||
|
||||
delete dir;
|
||||
delete dir_;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
void G4MPImessenger::SetNewValue( G4UIcommand* command, G4String newValue)
|
||||
void G4MPImessenger::SetNewValue(G4UIcommand* command, G4String newValue)
|
||||
{
|
||||
if (command == verbose) { // /mpi/verbose
|
||||
G4int lv= verbose-> GetNewIntValue(newValue);
|
||||
g4MPI-> SetVerbose(lv);
|
||||
if ( command == verbose_ ) { // /mpi/verbose
|
||||
G4int lv = verbose_-> GetNewIntValue(newValue);
|
||||
g4mpi_-> SetVerbose(lv);
|
||||
|
||||
} else if (command == status){ // /mpi/status
|
||||
g4MPI-> ShowStatus();
|
||||
} else if ( command == status_ ) { // /mpi/status
|
||||
g4mpi_-> ShowStatus();
|
||||
|
||||
} else if (command == execute){ // /mpi/execute
|
||||
} else if ( command == execute_ ) { // /mpi/execute
|
||||
G4UImanager* UI = G4UImanager::GetUIpointer();
|
||||
g4MPI-> ExecuteMacroFile(UI-> FindMacroPath(newValue));
|
||||
g4mpi_-> ExecuteMacroFile(UI-> FindMacroPath(newValue));
|
||||
|
||||
} else if (command == beamOn){ // /mpi/beamOn
|
||||
} else if ( command == beam_on_ ) { // /mpi/beamOn
|
||||
std::istringstream is(newValue);
|
||||
G4int nevent;
|
||||
G4bool qdivide;
|
||||
is >> nevent >> qdivide;
|
||||
g4MPI-> BeamOn(nevent, qdivide);
|
||||
g4mpi_-> BeamOn(nevent, qdivide);
|
||||
|
||||
} else if (command == dotbeamOn){ // /mpi/.beamOn
|
||||
} else if ( command == dot_beam_on_ ) { // /mpi/.beamOn
|
||||
std::istringstream is(newValue);
|
||||
G4int nevent;
|
||||
G4bool qdivide;
|
||||
is >> nevent >> qdivide;
|
||||
g4MPI-> BeamOn(nevent, qdivide);
|
||||
g4mpi_-> BeamOn(nevent, qdivide);
|
||||
|
||||
} else if (command == masterWeight){ // /mpi/masterWeight
|
||||
G4double weight= masterWeight-> GetNewDoubleValue(newValue);
|
||||
g4MPI-> SetMasterWeight(weight);
|
||||
} else if ( command == master_weight_ ) { // /mpi/masterWeight
|
||||
G4double weight= master_weight_-> GetNewDoubleValue(newValue);
|
||||
g4mpi_-> SetMasterWeight(weight);
|
||||
|
||||
} else if (command == showSeeds){ // /mpi/showSeeds
|
||||
g4MPI-> ShowSeeds();
|
||||
} else if ( command == show_seeds_ ) { // /mpi/showSeeds
|
||||
g4mpi_-> ShowSeeds();
|
||||
|
||||
} else if (command == setMasterSeed){ // /mpi/setMasterSeed
|
||||
} else if ( command == set_master_seed_ ) { // /mpi/setMasterSeed
|
||||
std::istringstream is(newValue);
|
||||
G4long seed;
|
||||
is >> seed;
|
||||
g4MPI-> GetSeedGenerator()-> SetMasterSeed(seed);
|
||||
g4MPI-> DistributeSeeds();
|
||||
g4mpi_-> GetSeedGenerator()-> SetMasterSeed(seed);
|
||||
g4mpi_-> DistributeSeeds();
|
||||
|
||||
} else if (command == setSeed){ // /mpi/setSeed
|
||||
} else if ( command == set_seed_ ) { // /mpi/setSeed
|
||||
std::istringstream is(newValue);
|
||||
G4int inode;
|
||||
G4long seed;
|
||||
is >> inode >> seed;
|
||||
g4MPI-> SetSeed(inode, seed);
|
||||
g4mpi_-> SetSeed(inode, seed);
|
||||
}
|
||||
|
||||
return;
|
||||
@@ -188,12 +189,11 @@ G4String G4MPImessenger::GetCurrentValue(G4UIcommand* command)
|
||||
{
|
||||
G4String cv;
|
||||
|
||||
if (command == verbose) {
|
||||
cv= verbose-> ConvertToString(g4MPI->GetVerbose());
|
||||
} else if (command == masterWeight) {
|
||||
cv= masterWeight-> ConvertToString(g4MPI->GetMasterWeight());
|
||||
if ( command == verbose_ ) {
|
||||
cv = verbose_-> ConvertToString(g4mpi_->GetVerbose());
|
||||
} else if ( command == master_weight_ ) {
|
||||
cv= master_weight_-> ConvertToString(g4mpi_->GetMasterWeight());
|
||||
}
|
||||
|
||||
return cv;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user