Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
G4MPImessenger Class Reference

#include <G4MPImessenger.hh>

Inheritance diagram for G4MPImessenger:
G4UImessenger

Public Member Functions

 G4MPImessenger ()
 
 ~G4MPImessenger ()
 
virtual void SetNewValue (G4UIcommand *command, G4String newValue)
 
virtual G4String GetCurrentValue (G4UIcommand *command)
 
void SetTargetObject (G4MPImanager *mpi_manager)
 
- Public Member Functions inherited from G4UImessenger
 G4UImessenger ()
 
 G4UImessenger (const G4String &path, const G4String &dsc, G4bool commandsToBeBroadcasted=true)
 
virtual ~G4UImessenger ()
 
G4bool operator== (const G4UImessenger &messenger) const
 

Additional Inherited Members

- Protected Member Functions inherited from G4UImessenger
G4String ItoS (G4int i)
 
G4String DtoS (G4double a)
 
G4String BtoS (G4bool b)
 
G4int StoI (G4String s)
 
G4double StoD (G4String s)
 
G4bool StoB (G4String s)
 
void AddUIcommand (G4UIcommand *newCommand)
 
void CreateDirectory (const G4String &path, const G4String &dsc, G4bool commandsToBeBroadcasted=true)
 
template<typename T >
T * CreateCommand (const G4String &cname, const G4String &dsc)
 
- Protected Attributes inherited from G4UImessenger
G4UIdirectorybaseDir
 
G4String baseDirName
 

Detailed Description

Definition at line 45 of file G4MPImessenger.hh.

Constructor & Destructor Documentation

G4MPImessenger::G4MPImessenger ( )

Definition at line 43 of file G4MPImessenger.cc.

References G4UIcommand::SetRange().

44  : G4UImessenger()
45 {
46  // /mpi
47  dir_ = new G4UIdirectory("/mpi/");
48  dir_-> SetGuidance("MPI control commands");
49 
50  // /mpi/verbose
51  verbose_ = new G4UIcmdWithAnInteger("/mpi/verbose", this);
52  verbose_-> SetGuidance("Set verbose level.");
53  verbose_-> SetParameterName("verbose", false, false);
54  verbose_->SetRange("verbose>=0 && verbose<=1");
55 
56  // /mpi/status
57  status_ = new G4UIcmdWithoutParameter("/mpi/status", this);
58  status_-> SetGuidance( "Show mpi status.");
59 
60  // /mpi/execute
61  execute_ = new G4UIcmdWithAString("/mpi/execute", this);
62  execute_-> SetGuidance("Execute a macro file. (=/control/execute)");
63  execute_-> SetParameterName("fileName", false, false);
64 
65  // /mpi/beamOn
66  beam_on_ = new G4UIcommand("/mpi/beamOn", this);
67  beam_on_-> SetGuidance("Start a parallel run w/ thread.");
68 
69  G4UIparameter* p1= new G4UIparameter("numberOfEvent", 'i', true);
70  p1-> SetDefaultValue(1);
71  p1-> SetParameterRange("numberOfEvent>=0");
72  beam_on_-> SetParameter(p1);
73 
74  G4UIparameter* p2= new G4UIparameter("divide", 'b', true);
75  p2-> SetDefaultValue(true);
76  beam_on_-> SetParameter(p2);
77 
78  // /mpi/.beamOn
79  dot_beam_on_ = new G4UIcommand("/mpi/.beamOn", this);
80  dot_beam_on_-> SetGuidance("Start a parallel run w/o thread.");
81 
82  p1= new G4UIparameter("numberOfEvent", 'i', true);
83  p1-> SetDefaultValue(1);
84  p1-> SetParameterRange("numberOfEvent>=0");
85  dot_beam_on_-> SetParameter(p1);
86 
87  p2= new G4UIparameter("divide", 'b', true);
88  p2-> SetDefaultValue(true);
89  dot_beam_on_-> SetParameter(p2);
90 
91  // /mpi/weightForMaster
92  master_weight_ = new G4UIcmdWithADouble("/mpi/masterWeight", this);
93  master_weight_-> SetGuidance("Set weight for master node.");
94  master_weight_-> SetParameterName("weight", false, false);
95  master_weight_-> SetRange("weight>=0. && weight<=1.");
96 
97  // /mpi/showSeeds
98  show_seeds_ = new G4UIcmdWithoutParameter("/mpi/showSeeds", this);
99  show_seeds_-> SetGuidance("Show seeds of MPI nodes.");
100 
101  // /mpi/setMasterSeed
102  set_master_seed_ = new G4UIcmdWithAnInteger("/mpi/setMasterSeed", this);
103  set_master_seed_-> SetGuidance("Set a master seed for the seed generator.");
104  set_master_seed_-> SetParameterName("seed", false, false);
105 
106  // /mpi/setSeed
107  set_seed_ = new G4UIcommand("/mpi/setSeed", this);
108  set_seed_-> SetGuidance("Set a seed for a specified node.");
109 
110  p1 = new G4UIparameter("node", 'i', false);
111  p1-> SetParameterRange("node>=0");
112  set_seed_-> SetParameter(p1);
113 
114  p2 = new G4UIparameter("seed", 'i', false);
115  set_seed_-> SetParameter(p2);
116 }
void SetRange(const char *rs)
Definition: G4UIcommand.hh:125
G4MPImessenger::~G4MPImessenger ( )

Definition at line 119 of file G4MPImessenger.cc.

120 {
121  delete verbose_;
122  delete status_;
123  delete execute_;
124  delete beam_on_;
125  delete dot_beam_on_;
126  delete master_weight_;
127  delete show_seeds_;
128  delete set_master_seed_;
129  delete set_seed_;
130 
131  delete dir_;
132 }

Member Function Documentation

G4String G4MPImessenger::GetCurrentValue ( G4UIcommand command)
virtual

Reimplemented from G4UImessenger.

Definition at line 188 of file G4MPImessenger.cc.

References G4MPImanager::GetMasterWeight(), and G4MPImanager::GetVerbose().

189 {
190  G4String cv;
191 
192  if ( command == verbose_ ) {
193  cv = verbose_-> ConvertToString(g4mpi_->GetVerbose());
194  } else if ( command == master_weight_ ) {
195  cv= master_weight_-> ConvertToString(g4mpi_->GetMasterWeight());
196  }
197 
198  return cv;
199 }
G4double GetMasterWeight() const
G4int GetVerbose() const
void G4MPImessenger::SetNewValue ( G4UIcommand command,
G4String  newValue 
)
virtual

Reimplemented from G4UImessenger.

Definition at line 135 of file G4MPImessenger.cc.

References G4UImanager::GetUIpointer().

136 {
137  if ( command == verbose_ ) { // /mpi/verbose
138  G4int lv = verbose_-> GetNewIntValue(newValue);
139  g4mpi_-> SetVerbose(lv);
140 
141  } else if ( command == status_ ) { // /mpi/status
142  g4mpi_-> ShowStatus();
143 
144  } else if ( command == execute_ ) { // /mpi/execute
146  g4mpi_-> ExecuteMacroFile(UI-> FindMacroPath(newValue));
147 
148  } else if ( command == beam_on_ ) { // /mpi/beamOn
149  std::istringstream is(newValue);
150  G4int nevent;
151  G4bool qdivide;
152  is >> nevent >> qdivide;
153  g4mpi_-> BeamOn(nevent, qdivide);
154 
155  } else if ( command == dot_beam_on_ ) { // /mpi/.beamOn
156  std::istringstream is(newValue);
157  G4int nevent;
158  G4bool qdivide;
159  is >> nevent >> qdivide;
160  g4mpi_-> BeamOn(nevent, qdivide);
161 
162  } else if ( command == master_weight_ ) { // /mpi/masterWeight
163  G4double weight= master_weight_-> GetNewDoubleValue(newValue);
164  g4mpi_-> SetMasterWeight(weight);
165 
166  } else if ( command == show_seeds_ ) { // /mpi/showSeeds
167  g4mpi_-> ShowSeeds();
168 
169  } else if ( command == set_master_seed_ ) { // /mpi/setMasterSeed
170  std::istringstream is(newValue);
171  G4long seed;
172  is >> seed;
173  g4mpi_-> GetSeedGenerator()-> SetMasterSeed(seed);
174  g4mpi_-> DistributeSeeds();
175 
176  } else if ( command == set_seed_ ) { // /mpi/setSeed
177  std::istringstream is(newValue);
178  G4int inode;
179  G4long seed;
180  is >> inode >> seed;
181  g4mpi_-> SetSeed(inode, seed);
182  }
183 
184  return;
185 }
long G4long
Definition: G4Types.hh:80
int G4int
Definition: G4Types.hh:78
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:58
bool G4bool
Definition: G4Types.hh:79
double G4double
Definition: G4Types.hh:76
void G4MPImessenger::SetTargetObject ( G4MPImanager mpi_manager)
inline

Definition at line 78 of file G4MPImessenger.hh.

79 {
80  g4mpi_ = mpi_manager;
81 }

The documentation for this class was generated from the following files: