// Return the absolute error and gradient for the doping w.r.t. the given // parameters. func AbsErrorMu_h(env *tempAll.Environment, variables []string) solve.Diffable { F := func(v vec.Vector) (float64, error) { env.Set(v, variables) L := env.PointsPerSide lhs := 2.0 / (env.T0 + env.Tz) rhs := bzone.Avg(L, 2, tempAll.WrapFunc(env, innerMu_h)) return lhs - rhs, nil } h := 1e-5 epsabs := 1e-4 return solve.SimpleDiffable(F, len(variables), h, epsabs) }
func AbsErrorMu_h(env *tempAll.Environment, variables []string) solve.Diffable { F := func(v vec.Vector) (float64, error) { env.Set(v, variables) if -env.Mu_b > -2.0*env.Mu_h { // when |Mu_b| is this large, no longer have pairs return env.X - tempPair.X1(env), nil } L := env.PointsPerSide lhs := 0.5 / (env.T0 + env.Tz) rhs := bzone.Avg(L, 2, tempAll.WrapFunc(env, innerMu_h)) return lhs - rhs, nil } h := 1e-5 epsabs := 1e-4 return solve.SimpleDiffable(F, len(variables), h, epsabs) }
// Concentration of unpaired holons func X1(env *tempAll.Environment) float64 { L := env.PointsPerSide return bzone.Avg(L, 2, tempAll.WrapFunc(env, innerX1)) }