public static UpdateGRVm Thermo() { var initData = SimGridFloatSamples.RandUniform0_1(GridSpan, 1234); var ggRet = new UpdateGRVm(GridSpan, GridSpan, BetaBoundsW, EnergyBoundsW, BetaDelta, ProcIsingIntBitsEnergy, update_params: UpdateParams); ggRet.GraphLatticeVm.SetUpdater(GraphLatticeVmEx.DrawGridCell_float_BW_mod256, initData); ggRet.UpdateVm.OnUpdateUI.Subscribe(p => UpdateGGView(p, ggRet)); Thermal_bp.Init(initData.Data, initData.Width, BlockSize); return(ggRet); }
public static UpdateGRVm AnnealerRb() { var initData = SimGridIntSamples.SquareRandBits(GridSpan, 5213); var ggRet = new UpdateGRVm(GridSpan, GridSpan, BetaBoundsW, EnergyBoundsW, BetaDelta, ProcIsingIntBitsEnergy, update_params: UpdateParams); //ggRet.GraphLatticeVm.SetUpdater(GraphLatticeVmEx.DrawGridCell_BWR, initData); ggRet.GraphLatticeVm.SetUpdater(GraphLatticeVmEx.DrawGridCell_float_BW_mod256, initData); ggRet.UpdateVm.OnUpdateUI.Subscribe(p => UpdateGGView(p, ggRet)); BlockPick.Init(initData.Data, initData.Width, 8); return(ggRet); }
public static UpdateGRVm Thermo() { var initTemps = SimGridFloatSamples.HiLow(GridSpan, 0.99f, 0.01f); var initFlips = SimGridIntSamples.SquareRandBits(GridSpan, 5213); var ggRet = new UpdateGRVm(GridSpan, GridSpan, BetaBoundsW, EnergyBoundsW, BetaDelta, ProcIsingIntBitsEnergy, update_params: UpdateParams); ggRet.GraphLatticeVm.SetUpdater(GraphLatticeVmEx.DrawGridCell_int_BW_mod256, initFlips); // ggRet.GraphLatticeVm.SetUpdater(GraphLatticeVmEx.DrawGridCell_float_BW_mod256, initTemps); ggRet.UpdateVm.OnUpdateUI.Subscribe(p => UpdateGGView(p, ggRet)); ThermalIsing_bp.Init(initTemps.Data, initFlips.Data, initTemps.Width, BlockSize, 4456); return(ggRet); }
public static void UpdateGGView(ProcResult result, UpdateGRVm ugvm) { ugvm.GraphLatticeVm.Update(result.Data["Grid"]); ugvm.Energy = 4.0f - (float)result.Data["Energy"]; var smidgeX = (ugvm.BetaBounds.Max - ugvm.BetaBounds.Min) / 500; var smidgeY = (ugvm.EnergyBounds.Max - ugvm.EnergyBounds.Min) / 500; ugvm.GraphVm.WbImageVm.ImageData = Id.AddRect( ugvm.GraphVm.WbImageVm.ImageData, new RV <float, Color>( minX: ugvm.Beta, maxX: ugvm.Beta + smidgeX, minY: ugvm.Energy, maxY: ugvm.Energy + smidgeY, v: (ugvm.Decreasing) ? Colors.Red : Colors.Black )); }