From b0667631219d9402fe0b42d8b5788f5c2d13c157 Mon Sep 17 00:00:00 2001 From: Arne Vansteenkiste Date: Tue, 9 Dec 2014 15:22:16 +0100 Subject: [PATCH] turn off temperature during relax --- engine/effectivefield.go | 4 +++- engine/engine.go | 2 +- engine/relax.go | 7 +++++-- engine/temperature.go | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/engine/effectivefield.go b/engine/effectivefield.go index 7e8b588b2..ad0224131 100644 --- a/engine/effectivefield.go +++ b/engine/effectivefield.go @@ -14,5 +14,7 @@ func SetEffectiveField(dst *data.Slice) { B_exch.AddTo(dst) // ...then add other terms B_anis.AddTo(dst) B_ext.AddTo(dst) - B_therm.AddTo(dst) + if !relaxing { + B_therm.AddTo(dst) + } } diff --git a/engine/engine.go b/engine/engine.go index 4eee431bf..15563f443 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -7,7 +7,7 @@ import ( "time" ) -const VERSION = "mumax 3.6" +const VERSION = "mumax 3.6.1" var UNAME = VERSION + " " + runtime.GOOS + "_" + runtime.GOARCH + " " + runtime.Version() + " (" + runtime.Compiler + ")" diff --git a/engine/relax.go b/engine/relax.go index 1d9d0497a..2986e71cc 100644 --- a/engine/relax.go +++ b/engine/relax.go @@ -11,6 +11,9 @@ func init() { DeclFunc("Relax", Relax, "Try to minimize the total energy") } +// are we relaxing? +var relaxing = false + func Relax() { SanityCheck() pause = false @@ -20,7 +23,6 @@ func Relax() { prevErr := MaxErr prevFixDt := FixDt prevPrecess := Precess - //prevTemp := Temp.upd_reg // ...to restore them later defer func() { @@ -28,6 +30,7 @@ func Relax() { MaxErr = prevErr FixDt = prevFixDt Precess = prevPrecess + relaxing = false // Temp.upd_reg = prevTemp // Temp.invalidate() // Temp.update() @@ -37,7 +40,7 @@ func Relax() { SetSolver(BOGAKISHAMPINE) FixDt = 0 Precess = false - //Temp.Set(0) + relaxing = true // Minimize energy: take steps as long as energy goes down. // This stops when energy reaches the numerical noise floor. diff --git a/engine/temperature.go b/engine/temperature.go index e491397c5..d2d9470b4 100644 --- a/engine/temperature.go +++ b/engine/temperature.go @@ -111,7 +111,7 @@ func (b *thermField) update() { } func GetThermalEnergy() float64 { - if Temp.isZero() { + if Temp.isZero() || relaxing { return 0 } else { return -cellVolume() * dot(&M_full, &B_therm)