Home
SSJ User's Guide Package simevents Simulation Clock and Event
Contents
1. A scheduled event has an associated time at which it will happen and a priority which can be queried using the methods time and priority respectively By default events occur in ascending order of time and have priority 1 Events with the same time occur in ascending order of priority For example if events e1 and e2 occur at the same time with priority 2 and 1 respectively then e2 will occur before e1 Events with the same time and priority occur in the order they were scheduled package umontreal iro lecuyer simevents public abstract class Event implements Comparable lt Event gt Constructors public Event Constructs a new event instance which can be placed afterwards into the event list of the default simulator by calling one of the schedule variants For example if Bang is an Event subclass the statement new Bang scheduleNext creates a new Bang event and places it at the beginning of the event list public Event Simulator sim Construct a new event instance associated with the given simulator Methods public void schedule double delay Schedules this event to happen in delay time units i e at time sim time delay by inserting it in the event list When two or more events are scheduled to happen at the same time and with the same priority they are placed in the event list and executed in the same order as they have been scheduled Note that the priority of this event should be adjusted us
2. public Accumulate Constructs a new Accumulate statistical probe using the default simulator and initializes it by invoking init public Accumulate Simulator inSim Constructs a new Accumulate statistical probe linked to the given simulator and initializes it by invoking init public Accumulate String name Constructs and initializes a new Accumulate statistical probe with name name and initial time 0 using the default simulator public Accumulate Simulator inSim String name Constructs initializes a new Accumulate statistical probe with name name and initial time 0 Methods public void init Initializes the statistical collector and puts the current value of the corresponding variable to 0 Note the initialization time the last update time and the simulation time are not reset to O by this method For this Sim init must be used public void init double x Same as init followed by update x public void update Updates the accumulator using the last value passed to update public void update double x Gives a new observation x to the statistical collector If broadcasting to observers is activated for this object this method will also transmit the new information to the registered observers by invoking the methods notifyListeners Accumulate 19 public double getInitTime Returns the initialization time for this object This is the simulation time when init was called for the last time pub
3. Continuous provides elementary tools for continuous simulation where certain variables vary continuously in time according to ordinary differential equations The class LinkedListStat implements doubly linked lists with tools for inserting re moving and viewing objects in the list and automatic statistical collection These lists can contain any kind of Object Sim This static class contains the executive of a discrete event simulation It maintains the simulation clock and starts executing the events in the appropriate order Its methods permit one to start stop and re initialize the simulation and read the simulation clock Starting from SSJ 2 0 the Sim class now uses the default simulator returned by the getDefaultSimulator method in the Simulator class Although the Sim class is perfectly adequate for simple simulations the Simulator class is more general and supports more functionnalities For example if one needs to have more than one simulation clock and event list one will have to use the Simulator class instead of the simpler Sim class package umontreal iro lecuyer simevents public final class Sim Methods public static double time Returns the current value of the simulation clock public static void init Reinitializes the simulation executive by clearing up the event list and resetting the simu lation clock to zero This method must not be used to initialize process driven simulation SimProcess
4. data structure using the default simulator and imple mented by nodeList The given list is cleared for the constructed list to be initially empty public ListWithStat Simulator inSim List lt Node lt E gt gt nodeList Constructs a new list with internal data structure implemented by nodeList The given list is cleared for the constructed list to be initially empty public ListWithStat List lt Node lt E gt gt nodeList Collection lt extends E gt c Constructs a list containing the elements of the specified collection whose elements are stored into nodeList and using the default simulator public ListWithStat Simulator inSim List lt Node lt E gt gt nodeList Collection lt extends E gt c Constructs a list containing the elements of the specified collection whose elements are stored into nodeList public ListWithStat List lt Node lt E gt gt nodeList String name Constructs a new list with name name internal list nodeList and using the default sim ulator This name can be used to identify the list in traces and reports The given list is cleared for the constructed list to be initially empty public ListWithStat Simulator inSim List lt Node lt E gt gt nodeList String name Constructs a new list with name name and internal list nodeList This name can be used to identify the list in traces and reports The given list is cleared for the constructed list to be initially empty public ListWithStat List lt Node lt
5. event list and resetting the simu lation clock to zero Simulator 5 public void init EventList evlist Same as init but also chooses evlist as the event list to be used For example init new DoublyLinked initializes the simulation with a doubly linked linear structure for the event list To initialize the current Simulator with a not empty eventList is also possible but the events scheduled in the eventList will be linked with the current simulator only public EventList getEventList Gets the currently used event list public boolean isSimulating Determines if this simulator is currently running i e executing scheduled events public boolean isStopped Determines if this simulator was stopped by an event The simulator may still be processing the event which has called the stop method in this case isSimulating returns true protected Event removeFirstEvent Removes the first event from the event list and sets the simulation clock to its event time public void start Starts the simulation executive There must be at least one Event in the event list when this method is called public void stop Tells the simulation executive to stop as soon as it takes control and to return control to the program that called start This program will then continue executing from the instructions right after its call to start If an Event is currently executing and this event has just called stop the executive wi
6. the class cl a subclass of Event in the event list If no such event is found returns null public lt E extends Event gt E getFirstOfClass Class lt E gt cl Returns the first event of the class E a subclass of Event in the event list If no such event is found returns null public ListIterator lt Event gt listlterator Returns a list iterator over the elements of the class Event in this list public boolean remove Event ev Removes the event ev from the event list cancels this event Returns true if and only if the event removal has succeeded public Event removeFirst Removes the first event from the event list to cancel or execute this event Returns the removed event If the list is empty then null is returned 22 DoublyLinked An implementation of EventList using a doubly linked linear list Each event is stored into a list node that contains a pointer to its following and preceding events Adding an event requires a linear search to keep the event list sorted by event time and priority Removing the first event is done in constant time because it simply removes the first list node List nodes are recycled for increased memory management efficiency package umontreal iro lecuyer simevents eventlist public class DoublyLinked implements EventList 23 Splay Tree An implementation of EventList using a splay tree 4 This tree is like a binary search tree except that when it is modified the affe
7. the default static one can have an associate continuous state which is obtained using the continuousState method of the Simulator class This state includes all active integration variables as well as the current integration method One of the methods selectEuler selectRungeKutta2 or selectRungeKutta4 must be called before starting any integration These methods permit one to select the numerical integration method and the step size h in time units that will be used for all continuous time variables linked to the simulator For all the methods an integration step at time t changes the values of the variables from their old values at time t A to their new values at time t Each integration step is scheduled as an event and added to the event list package umontreal iro lecuyer simevents public class ContinuousState Integration methods public enum IntegMethod EULER Euler integration method RUNGEKUTTA2 Runge Kutta integration method of order 2 RUNGEKUTTA4 Runge Kutta integration method of order 4 Constructor protected ContinuousState Simulator sim Creates a new ContinuousState object linked to the given simulator Usually the user should not call this constructor directly since a new object is created automatically by the continuousState method of class Simulator Methods public List lt Continuous gt getContinuousVariables Returns the list of continuous time variables currently integrated by
8. the list as a function of time It can be accessed by the method statSize The second one of the class Tally and accessible via statSojourn samples the sojourn times in the list of the objects removed during the observation period i e between the last initialization time of this statistical probe and the current time The method automatically calls initStat to initialize these two probes When this method is used it is normally invoked immediately after calling the constructor of the list public void initStat Reinitializes the two statistical probes created by setStatCollecting true and makes an update for the probe on the list size public double getInitTime Returns the last simulation time initStat was called public Accumulate statSize Returns the statistical probe on the evolution of the size of the list as a function of the simulation time This probe exists only if setStatCollecting true has been called for this list ListWithStat 15 public Tally statSojourn Returns the statistical probe on the sojourn times of the objects in the list This probe exists only if setStatCollecting true has been called for this list public String report Returns a string containing a statistical report on the list provided that setStatCollecting true has been called before for this list Even If setStatCollecting was called with false afterward the report will be made for the collected observations If the probes do no
9. E gt gt nodeList Collection lt extends E gt c String name Constructs a new list containing the elements of the specified collection c with name name internal list nodeList and using the default simulator This name can be used to identify the list in traces and reports 14 ListWithStat public ListWithStat Simulator inSim List lt Node lt E gt gt nodeList Collection lt extends E gt c String name Constructs a new list containing the elements of the specified collection c with name name and internal list nodeList This name can be used to identify the list in traces and reports Methods public E convertFromInnerType Node lt E gt node public Node lt E gt convertToInnerType E element public Simulator simulator Returns the simulator associated with this list public void setSimulator Simulator sim Sets the simulator associated with this list This list should be cleared after this method is called Statistic collection methods public boolean getStatCollecting Returns true if the list collects statistics about its size and sojourn times of elements and false otherwise By default statistical collecting is turned off public void setStatCollecting boolean b Starts or stops collecting statistics on this list If the statistical collection is turned ON the method creates two statistical probes if they do not exist yet The first one of the class Accumulate measures the evolution of the size of
10. List 26 RedblackTree An implementation of EventList using a red black tree which is similar to a binary search tree except that every node is colored red or black When modifying the structure the tree is reorganized for the colors to satisfy rules that give an average O log n time for removing the first event or inserting a new event where n is the number of elements in the structure However adding or removing events imply reorganizing the tree and requires more overhead than a binary search tree The present implementation uses the Java 2 TreeMap class which implements a red black tree for general usage This event list implementation is not efficient package umontreal iro lecuyer simevents eventlist public class RedblackTree implements EventList REFERENCES 27 References 1 G S Fishman Discrete Event Simulation Modeling Programming and Analysis Springer Series in Operations Research Springer Verlag New York NY 2001 2 J H Kingston Analysis of tree algorithms for the simulation event lists Acta Infor matica 22 15 33 1985 3 J H Kingston Analysis of Henriksen s algorithm for the simulation event set SIAM Journal on Computing 15 887 902 1986 4 D D Sleator and R E Tarjan Self adjusting binary search trees Journal of the Association for Computing Machinery 32 3 652 686 1985
11. SSJ User s Guide Package simevents Simulation Clock and Event List Management Version December 17 2014 This package provides the simulation clock and tools to manage the future events list These are the basic tools for discrete event simulation Several different implementations of the event list are offered Some basic tools for continuous simulation i e solving differential equations with respect to time are also pro vided CONTENTS 1 Contents Event O OD AeA W N Conti uous a oe be ee a esc eR ee te ee ee ae poke eee ec Gk ae ae pee a Gee Aes Goa eee ep ee 11 ListWithStat III 13 E AI 16 AE ee ee eee See Te eee ias das ds 18 Event List DoublyLinked s ss casta a ah ky de nk oY ete oe ee ae oe Ae of eS 22 bree de Bre hk Ge a era eB Seu ee Bre a ere amp 23 a a hailed a a aa ae ye 24 ARIES 25 Redblack Tree ee 26 2 CONTENTS Overview The scheduling part of discrete event simulations is managed by the chief executive class Simulator which contains the simulation clock and the central monitor The event list is taken from one of the implementations of the interface EventList which provide differ ent kinds of event list implementations One can change the default SplayTree event list implementation via the method init The class Event provides the facilities for creating and scheduling events in the simulation Each type of event must be defined by extending the class Event The class
12. cted node is moved to the top The rebalancing scheme is simpler than for a red black tree and can avoid the worst case of the linked list This gives a O log n average time for adding or removing an event where n is the size of the event list package umontreal iro lecuyer simevents eventlist public class SplayTree implements EventList 24 Binary Tree An implementation of EventList using a binary search tree Every event is stored into a tree node which has left and right children Using the event time as a comparator the left child is always smaller than its parent whereas the right is greater or equal This allows an average O log n time for adding an event and searching the first event where n is the number of events in the structure There is less overhead for adding and removing events than splay tree or red black tree However in the worst case adding or removing could be done in time proportional to n because the binary search tree can be turned into a linked list package umontreal iro lecuyer simevents eventlist public class BinaryTree implements EventList 25 Henriksen An implementation of EventList using the doubly linked indexed list of Henriksen see also 1 p 207 Events are stored in a normal doubly linked list An additionnal index array is added to the structure to allow quick access to the events package umontreal iro lecuyer simevents eventlist public class Henriksen implements Event
13. e time Returns the planned time of occurence of this event public final void setTime double time Sets the planned time of occurence of this event to time This method should never be called after the event was scheduled otherwise the events would not execute in ascending time order anymore public final double priority Returns the priority of this event 8 Event public final void setPriority double priority Sets the priority of this event to inPriority This method should never be called after the event was scheduled otherwise the events would not execute in ascending priority order anymore public int compareTo Event e Compares this object with the specified object e for order Returns 1 or 1 as this event occurs before or after the specified event e respectively If the two events occur at the same time then returns 1 0 or 1 as this event has a smaller equal or larger priority than event e public abstract void actions This is the method that is executed when this event occurs Every subclass of Event that is to be instantiated must provide an implementation of this method Continuous Represents a variable in a continuous time simulation This abstract class provides the basic structures and tools for continuous time simulation where certain variables evolve continuously in time according to differential equations Such continuous variables can be mixed with events and processes Each ty
14. ich is represented by an instance of this class For more convenience and compatibility this class therefore provides a mechanism to construct and return a default simulator which is used when an event is constructed without an explicit reference to a simulator and when the simulator is accessed through the Sim class Note that this class is NOT thread safe Consequently if a simulation program uses multiple threads it should acquire a lock on a simulator using a synchronized block before accessing its state Note however that one can launch many simulations in parallel with as many threads as long as each thread has its own Simulator package umontreal iro lecuyer simevents import java util ListIterator public class Simulator public static Simulator defaultSimulator Represents the default simulator being used by the class Sim and the no argument construc tor of Event This simulator is usually obtained with the getDefaultSimulator method which initializes it if needed But it might also be initialized differently e g if process driven simulation is required Constructors public Simulator Constructs a new simulator using a splay tree for the event list public Simulator EventList eventList Constructs a new simulator using eventList for the event list Methods public double time Returns the current value of the simulation clock public void init Reinitializes the simulation executive by clearing up the
15. ing setPriority before it is scheduled Event 7 public void scheduleNext Schedules this event as the first event in the event list to be executed at the current time as the next event public void scheduleBefore Event other Schedules this event to happen just before and at the same time as the event other For example if Bing and Bang are Event subclasses after the statements Bang bigOne new Bang schedule 12 0 new Bing scheduleBefore bigOne the event list contains two new events scheduled to happen in 12 units of time a Bing event followed by a Bang called bigOne public void scheduleAfter Event other Schedules this event to happen just after and at the same time as the event other public void reschedule double delay Cancels this event and reschedules it to happen in delay time units public boolean cancel Cancels this event before it occurs Returns true if cancellation succeeds this event was found in the event list false otherwise public final boolean cancel String type Finds the first occurence of an event of class type in the event list and cancels it Returns true if cancellation succeeds false otherwise public final Simulator simulator Returns the simulator linked to this event public final void setSimulator Simulator sim Sets the simulator associated with this event to sim This method should not be called while this event is in an event list public final doubl
16. init must be used instead public static void init EventList evlist Same as init but also chooses evlist as the event list to be used For example calling init new DoublyLinked initializes the simulation with a doubly linked linear structure for the event list This method must not be used to initialize process driven simulation umontreal iro lecuyer simprocs DSOLProcessSimulator EventList or umontreal iro lecuyer simprocs ThreadProcessSimulator EventList must be used instead public static EventList getEventList Gets the currently used event list public static void start Starts the simulation executive There must be at least one Event in the event list when this method is called public static void stop Tells the simulation executive to stop as soon as it takes control and to return control to the program that called start This program will then continue executing from the instructions right after its call to Sim start Ifan Event is currently executing and this event has just called Sim stop the executive will take control when the event terminates its execution Simulator Represents the executive of a discrete event simulator This class maintains a simulation clock an event list and starts executing the events in the appropriate order Its methods permit one to start stop and re initialize the simulation and read the simulation clock Usually a simulation program uses a single simulation clock wh
17. lic double getLastTime Returns the last update time for this object This is the simulation time of the last call to update or the initialization time if update was never called after init public double getLastValue Returns the value passed to this probe by the last call to its update method or the initial value if update was never called after init public Simulator simulator Returns the simulator associated with this statistical probe public void setSimulator Simulator sim Sets the simulator associated with this probe to sim One should call init after this method to reset the statistical probe public Accumulate clone Clone this object 20 Event List An interface for implementations of event lists Different implementations are provided in SSJ doubly linked list splay tree Henricksen s method etc The events in the event list are objects of the class Event The method Sim init permits one to select the actual implementation used in a simulation 2 To allow the user to print the event list the toString method from the Object class should be reimplemented in all EventList implementations It will return a string in the following format Contents of the event list event list class for the first line and each subsequent line has format scheduled event time event priority event string The event string is obtained by calling the toString method of the event objects The string should not end
18. ll take control when the event terminates its execution public ContinuousState continuousState Returns the current state of continuous variables being integrated during the simulation This state is used by the Continuous class when performing simulation of continuous vari ables it defaults to an empty state which is initialized only when this method is called Static methods public static Simulator getDefaultSimulator Returns the default simulator instance used by the deprecated class Sim If this simulator does not exist yet it is constructed using the no argument constructor of this class One can specify a different default simulator by setting the defaultSimulator field directly Event This abstract class provides event scheduling tools Each type of event should be de fined as a subclass of the class Event and should provide an implementation of the method actions which is executed when an event of this type occurs The instances of these sub classes are the actual events Each event is linked to a simulator represented by an instance of Simulator before it can be scheduled and processed A default simulator given by Simulator getDefaultSimulator is used if no simulator is linked explicitly with an event When an event is constructed it is not scheduled It must be scheduled separately by calling one of the scheduling methods schedule scheduleNext scheduleBefore etc An event can also be cancelled before it occurs
19. name using the default simulator This name can be used to identify the list in traces and reports public LinkedListStat Simulator inSim String name Constructs a new list with name name This name can be used to identify the list in traces and reports public LinkedListStat Collection lt extends E gt c String name Constructs a new list containing the elements of the specified collection c and with name name using the default simulator This name can be used to identify the list in traces and reports public LinkedListStat Simulator inSim Collection lt extends E gt c String name Constructs a new list containing the elements of the specified collection c and with name name This name can be used to identify the list in traces and reports LinkedListStat 17 LinkedList methods See the JDK documentation for more information about these methods public void addFirst E obj public void addLast E obj public E getFirst public E getLast public E removeFirst public E removeLast 18 Accumulate A subclass of StatProbe for collecting statistics on a variable that evolves in simulation time with a piecewise constant trajectory Each time the variable changes its value the method update must be called to inform the probe of the new value The probe can be reinitialized by init package umontreal iro lecuyer simevents public class Accumulate extends StatProbe implements Cloneable Constructors
20. nitializing it Methods public void init double val Initializes or reinitializes the continuous time variable to val public double value Returns the current value of this continuous time variable 10 Continuous public Simulator simulator Returns the simulator linked to this continuous time variable public void setSimulator Simulator sim Sets the simulator linked to this continuous time variable This method should not be called while this variable is active public void startInteg Starts the integration process that will change the state of this variable at each integration step public void startInteg double val Same as startInteg after initializing the variable to val public void stopInteg Stops the integration process for this continuous variable The variable keeps the value it took at the last integration step before calling stopInteg public abstract double derivative double t This method should return the derivative of this variable with respect to time at time t Every subclass of Continuous that is to be instantiated must implement it If the derivative does not depend explicitly on time t becomes a dummy parameter Internally the method is used with t not necessarily equal to the current simulation time public void afterEachStep This method is executed after each integration step for this Continuous variable Here it does nothing but every subclass of Continuous may reimplement it
21. pe of continuous time variable should be defined as a subclass of Continuous The instances of these subclasses are the actual continuous time variables Each subclass must implement the method derivative which returns its derivative with respect to time The trajectory of this variable is determined by integrating this derivative The subclass may also reimplement the method afterEachStep which is executed immediately after each integration step By default in the class Continuous this method does nothing This method could for example verify if the variable has reached a given threshold or update a graphical illustration of the variable trajectory When creating a class representing a continuous variable the toString method can be overridden to display information about the continuous variable This information will be displayed when formating the event list as a string Each continuous variable has a linked simulator represented by an instance of the Simulator class If no simulator is provided explicitly when constructing a variable the default simulator returned by Simulator getDefaultSimulator is used package umontreal iro lecuyer simevents public abstract class Continuous Constructors public Continuous Constructs a new continuous time variable linked to the default simulator without initializ ing it public Continuous Simulator sim Constructs a new continuous time variable linked to the given simulator without i
22. public static void selectEuler double h Selects the Euler method as the integration method with the integration step size h in time units for the default simulator The non static method selectEuler in ContinuousState can be used to set the integration method for any given simulator This method appears here only to keep compatibility with older versions of SSJ using a non static Simulator instance rather than the default simulator is recommended public static void selectRungeKutta4 double h Selects a Runge Kutta method of order 4 as the integration method to be used with step size h The non static method selectRungeKutta4 in ContinuousState can be used to set the integration method for any given simulator This method appears here only to keep compatibility with older versions of SSJ using a non static Simulator instance rather than the default simulator is recommended public static void selectRungeKutta2 double h Selects a Runge Kutta method of order 2 as the integration method to be used with step size h The non static method selectRungeKutta2 in ContinuousState can be used to set the integration method for any given simulator This method appears here only to keep compatibility with older versions of SSJ using a non static Simulator instance rather than the default simulator is recommended 11 ContinuousState Represents the portion of the simulator s state associated with continuous time simula tion Any simulator including
23. t exist i e setStatCollecting was never called for this object an illegal state exception will be thrown public String getName Returns the name associated to this list or null if no name was assigned Inner class public static class Node lt E gt Represents a node that can be part of a list with statistical collecting Constructor public Node E element double insertionTime Constructs a new node containing element element inserted into the list at time insertionTime Methods public E getElement Returns the element stored into this node public double getInsertionTime Returns the insertion time of the element in this node 16 LinkedListStat This class extends ListWithStat and uses a linked list as the internal data structure package umontreal iro lecuyer simevents public class LinkedListStat lt E gt extends ListWithStat lt E gt Constructors public LinkedListStat Constructs a new list initially empty public LinkedListStat Simulator inSim Constructs a new list initially empty and using the default simulator public LinkedListStat Collection lt extends E gt c Constructs a list containing the elements of the specified collection using the default simu lator public LinkedListStat Simulator inSim Collection lt extends E gt c Constructs a list containing the elements of the specified collection public LinkedListStat String name Constructs a new list with name
24. the simulator The returned list is updated automatically as variables are added or removed but it cannot be modified directly One must instead use startInteg or stopInteg in class Continuous to add or remove variables public IntegMethod integMethod Return an integer that represent the integration method in use public void selectEuler double h Selects the Euler method as the integration method with the integration step size h in time units 12 ContinuousState public void selectRungeKutta2 double h Selects a Runge Kutta method of order 2 as the integration method to be used with step size h public void selectRungeKutta4 double h Selects a Runge Kutta method of order 4 as the integration method to be used with step size h 13 List WithStat Implements a list with integrated statistical probes to provide automatic collection of statistics on the sojourn times of objects in the list and on the size of the list as a function of time given by a simulator The automatic statistical collection can be enabled or disabled for each list to reduce overhead This class extends TransformingList and transforms elements into nodes associating insertion times with elements package umontreal iro lecuyer simevents public class ListWithStat lt E gt extends TransformingList lt E ListWithStat Node lt E gt gt Constructors public ListWithStat List lt Node lt E gt gt nodeList Constructs a new list with internal
25. with the end of line character The following example is the event list of the bank example printed at 10h30 See examples pdf for more information Contents of the event list SplayTree 10 51 1 BankEv Arrival cfb549 10 54 1 BankEv Departure 8a7efd 11 1 BankEv 3086d4c1 14 1 BankEv 40f9f9d8 15 1 BankEv 50820dda package umontreal iro lecuyer simevents eventlist public interface EventList extends Iterable lt Event gt public boolean isEmpty Returns true if and only if the event list is empty no event is scheduled public void clear Empties the event list i e cancels all events public void add Event ev Adds a new event in the event list according to the time of ev If the event list contains events scheduled to happen at the same time as ev ev must be added after all these events public void addFirst Event ev Adds a new event at the beginning of the event list The given event ev will occur at the current simulation time public void addBefore Event ev Event other Same as add but adds the new event ev immediately before the event other in the list EventList 21 public void addAfter Event ev Event other Same as add but adds the new event ev immediately after the event other in the list public Event getFirst Returns the first event in the event list If the event list is empty returns null public Event getFirstOfClass String cl Returns the first event of
Download Pdf Manuals
Related Search
Related Contents
EAP350 GSMK CryptoPhone G10 User Manual User Manual - Top Meteo 8617En&Cf.fm - Support M-Cab 7100096 JVC MX-C55 User's Manual Gigabyte GA-F2A58M-S1 (rev. 3.x) Bedienungsanleitung Copyright © All rights reserved.
Failed to retrieve file