HolegPowerFlowContext.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package holeg;
  2. import holeg.model.Grid;
  3. import holeg.power_flow.PowerFlowProblem;
  4. import holeg.power_flow.SolverResult;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. public class HolegPowerFlowContext {
  8. public final Object lock = new Object();
  9. public List<Grid> lastSolvedGrids = new ArrayList<>();
  10. public Thread solverJob;
  11. public float solverTimeMilliseconds;
  12. public Grid showGridForVisual;
  13. public PowerFlowProblem problem;
  14. public SolverResult result;
  15. public void clearCache() {
  16. synchronized (lock) {
  17. lastSolvedGrids.clear();
  18. }
  19. }
  20. public boolean isSolving() {
  21. synchronized (lock) {
  22. return solverJob != null && solverJob.isAlive();
  23. }
  24. }
  25. public void stopSolver() {
  26. synchronized (lock) {
  27. if (solverJob != null) {
  28. try {
  29. solverJob.interrupt();
  30. // wait till old solver job has finished or is interrupted
  31. solverJob.join(100);
  32. } catch (InterruptedException ignored) {
  33. }
  34. solverJob = null;
  35. }
  36. }
  37. }
  38. }