Download (right-click and "save as")

# @author: tester
# @version: 1
# @description: mass-spring-damper analysis
# @keywords: msd, training

variable: k       double   input
variable: c       double   input
variable: m       double   input
variable: x0      double   input
variable: v0      double   input
variable: force   double   input
variable: w       double   input
variable: tStart  double   input
variable: tEnd    double   input
variable: tStep   double   input

variable: wN      double   output
variable: wD      double   output
variable: xMag    double   output
variable: t       double[] output
variable: x       double[] output
variable: x_ss    double[] output
variable: x_trans double[] output

# ------------------------------------------
script: language="python"

def run():
   wrapper.getRunShare().lock()
   rowFieldMsdIn(PHXRowFieldFile.GENERATE)
   wrapper.getRunShare().run( 'msd' )
   rowFieldMsdOut(PHXRowFieldFile.PARSE)
   wrapper.getRunShare().unlock()

def rowFieldMsdIn(mode):
   file = new PHXRowFieldFile(wrapper, int(mode))
   file.setTemplateFile('msd.in.template')
   file.setFileToGenerate('msd.in')

   file.transferVar(k, 7, 2)
   file.transferVar(c, 8, 2)
   file.transferVar(m, 9, 2)
   file.transferVar(x0, 10, 2)
   file.transferVar(v0, 11, 2)
   file.transferVar(force, 12, 2)
   file.transferVar(w, 13, 2)
   file.transferVar(tStart, 16, 2)
   file.transferVar(tEnd, 17, 2)
   file.transferVar(tStep, 18, 2)

   if mode == PHXRowFieldFile.GENERATE:
      file.generate()

def rowFieldMsdOut(mode):
   file = new PHXRowFieldFile(wrapper, int(mode))
   file.setFileToGenerateOrParse('msd.out')

   file.setDelimiters('=')
   file.transferVar(wN, 25, 2)
   file.transferVar(wD, 26, 2)
   file.transferVar(xMag, 28, 2)

   file.setDelimiters(' \t')
   file.transferArray(t, 33, 42, 1, 1)
   file.transferArray(x, 33, 42, 2, 2)
   file.transferArray(x_ss, 33, 42, 3, 3)
   file.transferArray(x_trans, 33, 42, 4, 4)

   if mode == PHXRowFieldFile.GENERATE:
      file.generate()

try:
   rowFieldMsdIn(PHXRowFieldFile.READ_TEMPLATE)
   rowFieldMsdOut(PHXRowFieldFile.READ_TEMPLATE)
except RuntimeError:
   pass