Skip to content

Issue with time stepping #191

@jeanbraun

Description

@jeanbraun

Hello @benbovy,

I noted a strange behavior with the framework. It is illustrated in the following basic model. It should produce an output array that goes from 0 to 1 by updating the a variable junk by one unit per time step. At every time step it also prints the value of junk as well as the step_start and step_end times.

Two features seem unrealistic: first, the end times are smaller than the start times and the first end time is not defined; second, the result seems to be stored in the final array ds_out.empty__junk with a negative offset of -1 and the result for the last time step is repeated from the previous one (i.e., the output should be [0,1,2,3,4,5,6,7,8,9,10] whereas it is [1,2,3,4,5,6,7,8,9,10,10]).

Am I doing something wrong or is it a problem with the framework? I am surprised that we would not have noted this behavior before.
I attach a description of the environment I am using for this.

Thanks in advance for your help

Jean

import numpy as np
import xsimlab as xs

@xs.process
class Empty:
    junk = xs.variable(intent="inout")
            
    @xs.runtime(args=("step_delta","step_start","step_end"))
    def run_step(self, dt, t0, t1):
        print('time', t0,t1,dt)
        print('junk before', self.junk)
        self.junk = self.junk + 1
        print('junk after', self.junk)
        
model = xs.Model({"empty": Empty})

ds_in = xs.create_setup(
    model=model,
    clocks={"time": np.linspace(0,.2,11),
           "out": np.linspace(0,.2,11)},
    master_clock = "time",
    input_vars={"empty__junk": 0},
    output_vars={"empty__junk":"out"})

with model, xs.monitoring.ProgressBar():
    ds_out = ds_in.xsimlab.run()
print(ds_out.empty__junk)

xsimlab.yml.txt
xsimlab.list.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions