Skip to content

Commit dff1bf8

Browse files
authored
Enable pool and pencil decomposition for kcw.x (#253)
This PR reintroduces `npool` and add `pd` as possible parallelization options for `kcw.x`.
1 parent 631076f commit dff1bf8

1 file changed

Lines changed: 29 additions & 4 deletions

File tree

src/koopmans/commands.py

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,12 +185,16 @@ class KCWHamConfig(ParallelCommandConfig):
185185
stdout: str | None = "PREFIX.kho"
186186
stderr: str | None = None
187187
stdin_redirection_string: ClassVar[str] = "-in"
188+
pd: bool = Field(False, description="Use pencil decomposition.")
188189
ase_env_var: ClassVar[str] = "ASE_KCW_HAM_COMMAND"
189190

190191
@property
191192
def options_str(self) -> str:
192193
"""Return the string of options to provide to the executable."""
193-
return ''
194+
options: list[str] = []
195+
if self.pd:
196+
options.append(f"-pd {self.pd}")
197+
return ' '.join(options)
194198

195199

196200
class KCWScreenConfig(ParallelCommandConfig):
@@ -201,12 +205,19 @@ class KCWScreenConfig(ParallelCommandConfig):
201205
stdout: str | None = "PREFIX.kso"
202206
stderr: str | None = None
203207
stdin_redirection_string: ClassVar[str] = "-in"
208+
npool: int | None = Field(None, description="Number of pools to use for parallel execution.")
209+
pd: bool = Field(False, description="Use pencil decomposition.")
204210
ase_env_var: ClassVar[str] = "ASE_KCW_SCREEN_COMMAND"
205211

206212
@property
207213
def options_str(self) -> str:
208214
"""Return the string of options to provide to the executable."""
209-
return ''
215+
options: list[str] = []
216+
if self.npool is not None:
217+
options.append(f"-npool {self.npool}")
218+
if self.pd:
219+
options.append(f"-pd {self.pd}")
220+
return ' '.join(options)
210221

211222

212223
class KCWWannierConfig(ParallelCommandConfig):
@@ -217,12 +228,19 @@ class KCWWannierConfig(ParallelCommandConfig):
217228
stdout: str | None = "PREFIX.w2ko"
218229
stderr: str | None = None
219230
stdin_redirection_string: ClassVar[str] = "-in"
231+
npool: int | None = Field(None, description="Number of pools to use for parallel execution.")
232+
pd: bool = Field(False, description="Use pencil decomposition.")
220233
ase_env_var: ClassVar[str] = "ASE_KCW_WANNIER_COMMAND"
221234

222235
@property
223236
def options_str(self) -> str:
224237
"""Return the string of options to provide to the executable."""
225-
return ''
238+
options: list[str] = []
239+
if self.npool is not None:
240+
options.append(f"-npool {self.npool}")
241+
if self.pd:
242+
options.append(f"-pd {self.pd}")
243+
return ' '.join(options)
226244

227245

228246
class KCPConfig(ParallelCommandConfig):
@@ -265,12 +283,19 @@ class ProjwfcConfig(ParallelCommandConfig):
265283
stdout: str | None = "PREFIX.pro"
266284
stderr: str | None = None
267285
stdin_redirection_string: ClassVar[str] = "-in"
286+
npool: int | None = Field(None, description="Number of pools to use for parallel execution.")
287+
pd: bool = Field(False, description="Use pencil decomposition.")
268288
ase_env_var: ClassVar[str] = "ASE_PROJWFC_COMMAND"
269289

270290
@property
271291
def options_str(self) -> str:
272292
"""Return the string of options to provide to the executable."""
273-
return ''
293+
options: list[str] = []
294+
if self.npool is not None:
295+
options.append(f"-npool {self.npool}")
296+
if self.pd:
297+
options.append(f"-pd {self.pd}")
298+
return ' '.join(options)
274299

275300

276301
class Wann2KCPConfig(ParallelCommandConfig):

0 commit comments

Comments
 (0)