示例#1
0
 def test_fmi_1_0_initialize(self):
   model_name = 'sine_standalone'
   fmu = fmippim.FMUCoSimulation( FMU_URI_PRE + model_name, model_name )
   status = fmu.instantiate( "sine_standalone1", 0., False, False )
   self.assertEqual( status, fmippim.fmiOK )
   status = fmu.initialize( 0., True, 10. )
   self.assertEqual( status, fmippim.fmiOK )
示例#2
0
 def test_fmi_1_0_setvalue(self):
   model_name = 'sine_standalone'
   fmu = fmippim.FMUCoSimulation( FMU_URI_PRE + model_name, model_name )
   status = fmu.instantiate( "sine_standalone1", 0., False, False )
   self.assertEqual( status, fmippim.fmiOK )
   status = fmu.initialize( 0., True, 10. )
   self.assertEqual( status, fmippim.fmiOK )
   status = fmu.setRealValue( 'omega', 0.123 )
   self.assertEqual( status, fmippim.fmiOK )
   omega = fmu.getRealValue( 'omega' )
   self.assertEqual( fmu.getLastStatus(), fmippim.fmiOK )
   self.assertEqual( omega, 0.123 )
示例#3
0
  def test_fmi_1_0_run_simulation_start_time_not_zero(self):
    import math

    model_name = 'sine_standalone'
    fmu = fmippim.FMUCoSimulation( FMU_URI_PRE + model_name, model_name )
    status = fmu.instantiate( "sine_standalone1", 0., False, False )
    self.assertEqual( status, fmippim.fmiOK )
    
    omega = 0.628318531
    status = fmu.setRealValue( 'omega', omega )
    self.assertEqual( status, fmippim.fmiOK )
    
    tstart = 5.
    t = tstart
    stepsize = 1.
    tstop = 10.
    x = 0.
    cycles = 0
    positive = False
    twopi = 6.28318530718
    
    status = fmu.initialize( tstart, True, tstop )
    self.assertEqual( status, fmippim.fmiOK )
    
    while ( ( t + stepsize ) - tstop < EPS_TIME ):
      # Make co-simulation step.
      status = fmu.doStep( t, stepsize, True )
      self.assertEqual( status, fmippim.fmiOK )

      # Advance time.
      t += stepsize
      self.assertTrue( math.fabs( t - fmu.getTime() ) < EPS_TIME )

      # Retrieve result.
      x = fmu.getRealValue( 'x' )
      self.assertEqual( fmu.getLastStatus(), fmippim.fmiOK )

      cycles = fmu.getIntegerValue( 'cycles' )
      self.assertEqual( fmu.getLastStatus(), fmippim.fmiOK )

      positive = fmu.getBooleanValue( 'positive' )
      self.assertEqual( fmu.getLastStatus(), fmippim.fmiOK )

      self.assertTrue( math.fabs( x - math.sin( omega*t ) ) < 1e-9 )
      self.assertEqual( cycles, math.floor( omega*t/twopi ) )
      self.assertEqual( positive, True if ( x > 0.0 ) else False )
	
    self.assertTrue( math.fabs( tstop - fmu.getTime() ) < EPS_TIME )
示例#4
0
 def test_fmi_1_0_load(self):
   model_name = 'sine_standalone'
   fmu = fmippim.FMUCoSimulation( FMU_URI_PRE + model_name, model_name )