Field Updater

class openfts.field_updater.EMPEC(lambdas=None, update_order=None, adaptive_timestep=None, adaptive_timestep_warmup=None)

Euler-Maruyama Predictor Corrected updater

Parameters:
  • lambdas (float array) – Lambda relaxation coefficient for fields. One should be specified for each field.

  • update_order (string) – Specify how often to update fields. See options below

  • adaptive_timestep (bool) – [WIP] Option to use the adaptive timestep of Aarts et al 2010 Eq 2.9. If in doubt, set to False.

update_order options:
  • “staggered” - Update one field per time step. This is typically used for semi-implicit updaters like SIS or ETD.

  • “simultaneous” - Update all fields each time step. This is typically used for predictor-corrector updaters like EMPEC.

Example (python):

fts.driver.field_updater = openfts.field_updater.EMPEC(update_order='simultaneous',adaptive_timestep=False,lambdas=[1.0, 1.0])

Example (json):

"driver": {
  ...
  "field_updater": {
    "type": "EMPEC",
    "__update_order": "staggered",
    "update_order": "simultaneous",
    "adaptive_timestep": false,
    "lambdas": [1.0,1.0]
  }
}
class openfts.field_updater.Euler(lambdas=None, update_order=None, adaptive_timestep=None, adaptive_timestep_warmup=None)

Forward Euler updater

Parameters:
  • lambdas (float array) – Lambda relaxation coefficient for fields. One should be specified for each field.

  • update_order (string) – Specify how often to update fields. See options below

  • adaptive_timestep (bool) – [WIP] Option to use the adaptive timestep of Aarts et al 2010 Eq 2.9. If in doubt, set to False.

update_order options:
  • “staggered” - Update one field per time step. This is typically used for semi-implicit updaters like SIS or ETD.

  • “simultaneous” - Update all fields each time step. This is typically used for predictor-corrector updaters like EMPEC.

Example (python):

fts.driver.field_updater = openfts.field_updater.Euler(update_order='staggered',adaptive_timestep=False,lambdas=[1.0, 1.0])

Example (json):

"driver": {
  ...
  "field_updater": {
    "type": "Euler",
    "update_order": "staggered",
    "adaptive_timestep": false,
    "lambdas": [1.0,1.0]
  }
}
class openfts.field_updater.SIS(lambdas=None, update_order=None, adaptive_timestep=None, adaptive_timestep_warmup=None)

Semi-implicit Seidel updater

Parameters:
  • lambdas (float array) – Lambda relaxation coefficient for fields. One should be specified for each field.

  • update_order (string) – Specify how often to update fields. See options below

  • adaptive_timestep (bool) – [WIP] Option to use the adaptive timestep of Aarts et al 2010 Eq 2.9. If in doubt, set to False.

update_order options:
  • “staggered” - Update one field per time step. This is typically used for semi-implicit updaters like SIS or ETD.

  • “simultaneous” - Update all fields each time step. This is typically used for predictor-corrector updaters like EMPEC.

Example (python):

fts.driver.field_updater = openfts.field_updater.SIS(update_order='staggered',adaptive_timestep=False,lambdas=[1.0, 1.0])

Example (json):

"driver": {
  ...
  "field_updater": {
    "type": "SIS",
    "update_order": "staggered",
    "adaptive_timestep": false,
    "lambdas": [1.0,1.0]
  }
}
class openfts.field_updater.ETD(lambdas=None, update_order=None, adaptive_timestep=None, adaptive_timestep_warmup=None)

Exponential time differencing updater (beta)

Parameters:
  • lambdas (float array) – Lambda relaxation coefficient for fields. One should be specified for each field.

  • update_order (string) – Specify how often to update fields. See options below

  • adaptive_timestep (bool) – [WIP] Option to use the adaptive timestep of Aarts et al 2010 Eq 2.9. If in doubt, set to False.

update_order options:
  • “staggered” - Update one field per time step. This is typically used for semi-implicit updaters like SIS or ETD.

  • “simultaneous” - Update all fields each time step. This is typically used for predictor-corrector updaters like EMPEC.

Example (python):

fts.driver.field_updater = openfts.field_updater.ETD(update_order='staggered',adaptive_timestep=False,lambdas=[1.0, 1.0])

Example (json):

"driver": {
  ...
  "field_updater": {
    "type": "ETD",
    "update_order": "staggered",
    "adaptive_timestep": false,
    "lambdas": [1.0,1.0]
  }
}