Initializing help system before first use

mmjobs version of the example

A model with an mmjobs version of the application program has already been shown in Section mmjobs version of the example. From multiple models running on the same Mosel instance, we now move one step further, namely, running the submodel on a remote Mosel instance. Before compiling the submodel, we connect to another Mosel instance. This instance is used for compiling to model, the source of which is located on our local machine running the master model. Remote access to a file is achieved via the rmt driver (equally defined by module mmjobs). In our example, data is exchanged via shared memory (shmem) accessed from a remote Mosel instance (rmt, optionally followed by a node number in square brackets) using binary format (bin), resulting in extended file names that combine several driver prefixes, for example, bin:rmt:[-1]shmem:burgdata to access binary data held in shared memory of the parent node.

model "Run model burglar remotely IO"
 uses "mmjobs", "mmsystem"

 declarations
  modBurg: Model                    ! Submodel
  moselInst: Mosel                  ! Mosel instance
  ISet,SSet: set of string          ! Index set for data arrays
  V,W: array(ISet) of real ! Data arrays
  SolTake: array(SSet) of real      ! Solution values
 end-declarations

 V:: (["camera","necklace","vase","picture","tv","video","chest","brick"])
      [15, 100, 90, 60, 40, 15, 10,  1]
 W:: (["camera","necklace","vase","picture","tv","video","chest","brick"])
      [ 2,  20, 20, 30, 40, 30, 60, 10]

!!! Select the (remote) machines to be used:
!!! Use names, IP addresses, or empty string for the node running this model
 MOSINST:= ""
                                    ! Connect to a remote instance
 if connect(moselInst, MOSINST)<>0 then exit(1); end-if
                                    ! Compile the model remotely
 if compile(moselInst, "", "rmt:"+expandpath("burglar2m.mos"),
            "shmem:burglar.bim")<>0 then
  exit(2); end-if
 load(moselInst, modBurg, "shmem:burglar.bim") ! Load the bim file
 fdelete("rmt:["+getnode(moselInst)+"]shmem:burglar.bim")
                                    ! bim file is no longer needed

 setdefstream(modBurg, F_OUTPUT, "null:")      ! Disable output from submodel

! Save data in shared memory on local host
 initializations to "bin:shmem:burgdata"
  V as "VALUE"
  W as "WEIGHT"
 end-initializations
                                    ! Start model execution, setting parameters
 run(modBurg,
     "DATA='bin:rmt:[-1]shmem:burgdata',SOL='bin:rmt:[-1]shmem:burgsol'")
 wait                               ! Wait for model termination
 dropnextevent                      ! Ignore termination event message

! Retrieve solution from shared memory
 initializations from "bin:shmem:burgsol"
  SolTake
 end-initializations

 forall(i in SSet)  writeln(" take(", i, "): ", SolTake(i))

end-model