예제 #1
0
파일: solver.go 프로젝트: shenyp09/mx3
func solverCheckErr(err float64) {
	// Note: err == 0 occurs when input is NaN (or time step massively too small).
	if err == 0 {
		util.DashExit()
		log.Fatalf("solver: cannot adapt dt")
	}
}
예제 #2
0
파일: adder.go 프로젝트: shenyp09/mx3
// returns a GPU buffer for temporarily adding a quantity to and saving it
func addBuf() *buffered {
	if _addBuf == nil {
		util.DashExit()
		log.Println("allocating GPU buffer for output")
		_addBuf = newBuffered(cuda.NewSynced(3, mesh), "buffer", nil)
	}
	return _addBuf
}
예제 #3
0
파일: engine.go 프로젝트: shenyp09/mx3
// Run the simulation for a number of steps.
func Steps(n int) {
	log.Println("run for", n, "steps")
	checkInited()
	defer util.DashExit()
	for i := 0; i < n; i++ {
		step()
	}
}
예제 #4
0
파일: engine.go 프로젝트: shenyp09/mx3
// Run the simulation for a number of seconds.
func Run(seconds float64) {
	log.Println("run for", seconds, "s")
	checkInited()
	stop := Time + seconds
	defer util.DashExit()
	for Time < stop {
		step()
	}
}