// Runs a script file. func runFileAndServe(fname string) { outDir := util.NoExt(fname) + ".out" if *flag_od != "" { outDir = *flag_od } engine.InitIO(fname, outDir, *flag_forceclean) fname = engine.InputFile var code *script.BlockStmt var err2 error if fname != "" { // first we compile the entire file into an executable tree code, err2 = engine.CompileFile(fname) util.FatalErr(err2) } // now the parser is not used anymore so it can handle web requests goServeGUI() if *flag_interactive { openbrowser("http://127.0.0.1" + *flag_port) } // start executing the tree, possibly injecting commands from web gui engine.EvalFile(code) if *flag_interactive { engine.RunInteractive() } }
func runInteractive() { fmt.Println("//no input files: starting interactive session") //initEngine() // setup outut dir now := time.Now() outdir := fmt.Sprintf("mumax-%v-%02d-%02d_%02dh%02d.out", now.Year(), int(now.Month()), now.Day(), now.Hour(), now.Minute()) engine.InitIO(outdir, outdir, *flag_forceclean) engine.Timeout = 365 * 24 * time.Hour // basically forever // set up some sensible start configuration engine.Eval(`SetGridSize(128, 64, 1) SetCellSize(4e-9, 4e-9, 4e-9) Msat = 1e6 Aex = 10e-12 alpha = 1 m = RandomMag()`) addr := goServeGUI() openbrowser("http://127.0.0.1" + addr) engine.RunInteractive() }