feat: reads potentions from ljc file
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
import shutil
|
||||
|
||||
from diceplayer.dice.dice_input import NVTTerConfig, NVTEqConfig, NPTEqConfig, NPTTerConfig
|
||||
from diceplayer.dice.dice_input import (
|
||||
NPTEqConfig,
|
||||
NPTTerConfig,
|
||||
NVTEqConfig,
|
||||
NVTTerConfig,
|
||||
)
|
||||
from diceplayer.dice.dice_wrapper import DiceWrapper
|
||||
from diceplayer.logger import logger
|
||||
from diceplayer.state.state_model import StateModel
|
||||
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from threading import Thread
|
||||
|
||||
@@ -15,7 +19,9 @@ class DiceHandler:
|
||||
|
||||
def run(self, state: StateModel, cycle: int) -> StateModel:
|
||||
if self.dice_directory.exists():
|
||||
logger.info(f"Found dice directory: {self.dice_directory}, this directory will be purged for a clean state")
|
||||
logger.info(
|
||||
f"Found dice directory: {self.dice_directory}, this directory will be purged for a clean state"
|
||||
)
|
||||
shutil.rmtree(self.dice_directory)
|
||||
self.dice_directory.mkdir(parents=True)
|
||||
|
||||
@@ -38,7 +44,9 @@ class DiceHandler:
|
||||
t.join()
|
||||
|
||||
if len(results) != state.config.dice.nprocs:
|
||||
raise RuntimeError(f"Expected {state.config.dice.nprocs} simulation results, but got {len(results)}")
|
||||
raise RuntimeError(
|
||||
f"Expected {state.config.dice.nprocs} simulation results, but got {len(results)}"
|
||||
)
|
||||
|
||||
return results
|
||||
|
||||
@@ -47,21 +55,23 @@ class DiceHandler:
|
||||
def commit_simulation_state(self, state: StateModel, result: dict) -> StateModel:
|
||||
return state
|
||||
|
||||
def _simulation_process(self, state: StateModel, cycle: int, proc: int, results: list[dict]) -> None:
|
||||
def _simulation_process(
|
||||
self, state: StateModel, cycle: int, proc: int, results: list[dict]
|
||||
) -> None:
|
||||
proc_directory = self.dice_directory / f"{proc:02d}"
|
||||
if proc_directory.exists():
|
||||
shutil.rmtree(proc_directory)
|
||||
proc_directory.mkdir(parents=True)
|
||||
|
||||
dice = DiceWrapper(
|
||||
state.config.dice, proc_directory
|
||||
)
|
||||
dice = DiceWrapper(state.config.dice, proc_directory)
|
||||
|
||||
if state.config.dice.randominit == "first" and cycle == 0:
|
||||
self._generate_phb_file(state, proc_directory)
|
||||
|
||||
if state.config.dice.randominit == "first" and cycle >= 0:
|
||||
self._generate_last_xyz(state, proc_directory)
|
||||
else:
|
||||
nvt_ter_config = NVTTerConfig.from_config(state.config)
|
||||
dice.run(nvt_ter_config)
|
||||
else:
|
||||
self._generate_last_xyz(state, proc_directory)
|
||||
|
||||
if len(state.config.dice.nstep) == 2:
|
||||
nvt_eq_config = NVTEqConfig.from_config(state.config)
|
||||
@@ -76,5 +86,30 @@ class DiceHandler:
|
||||
|
||||
results.append(dice.extract_results())
|
||||
|
||||
def _generate_last_xyz(self, state: StateModel, proc_directory: Path) -> None:
|
||||
...
|
||||
@staticmethod
|
||||
def _generate_phb_file(state: StateModel, proc_directory: Path) -> None:
|
||||
fstr = "{:<3d} {:>3d} {:>10.5f} {:>10.5f} {:>10.5f} {:>10.6f} {:>9.5f} {:>7.4f}\n"
|
||||
|
||||
phb_file = proc_directory / state.config.dice.ljname
|
||||
|
||||
with open(phb_file, "w") as f:
|
||||
f.write(f"{state.config.dice.combrule}\n")
|
||||
f.write(f"{len(state.config.dice.nmol)}\n")
|
||||
|
||||
for molecule in state.system.molecule:
|
||||
f.write(f"{len(molecule.atom)} {molecule.molname}\n")
|
||||
for atom in molecule.atom:
|
||||
f.write(
|
||||
fstr.format(
|
||||
atom.lbl,
|
||||
atom.na,
|
||||
atom.rx,
|
||||
atom.ry,
|
||||
atom.rz,
|
||||
atom.chg,
|
||||
atom.eps,
|
||||
atom.sig,
|
||||
)
|
||||
)
|
||||
|
||||
def _generate_last_xyz(self, state: StateModel, proc_directory: Path) -> None: ...
|
||||
|
||||
Reference in New Issue
Block a user