private IEnergy CreateUniaxialAnisotropy(IMifEnergy energy, IColor color)
        {
            var anisotropy     = energy as UniaxialAnisotropy;
            int energiesAmount = 0;

            if ((energy as UniaxialAnisotropy).Axis.Atlas != null)
            {
                energiesAmount = (energy as UniaxialAnisotropy).Axis.RegionsValue.Count;
            }
            List <IEnergyPart> energies = new List <IEnergyPart>();

            energies.Add(_creator.Create(Enums.EnergyType.UniaxialAnisotropy,
                                         anisotropy.Axis.DefaultValue.X, anisotropy.Axis.DefaultValue.Y,
                                         anisotropy.Axis.DefaultValue.Z, color, anisotropy.K1.DefaultValue, "default"));
            for (int i = 0; i < energiesAmount; i++)
            {
                var energyPart = _creator.Create(Enums.EnergyType.UniaxialAnisotropy,
                                                 anisotropy.Axis.RegionsValue[i].Item2.X, anisotropy.Axis.RegionsValue[i].Item2.Y,
                                                 anisotropy.Axis.RegionsValue[i].Item2.Z, color, anisotropy.K1.RegionsValue[i].Item2,
                                                 anisotropy.K1.RegionsValue[i].Item1);
                energies.Add(energyPart);
            }
            if (energiesAmount != 0)
            {
                //  Positioning(anisotropy, energies);
            }
            //else : Get max of all atlases x,y,z and select it as point<-how can I get atlases from here?

            return(new SpintronicsAnisotropy(energy, energies));
        }
Ejemplo n.º 2
0
 public IEnergy CreateEnergy(IMifEnergy energy, IColor color)
 {
     if (energy != null)
     {
         return(_energyCreator.CreateEnergy(energy, color));
     }
     throw new NullReferenceException();
 }
Ejemplo n.º 3
0
        public IEnergy CreateZeeman(IMifEnergy energy, IColor color)
        {
            switch (energy.GetType())
            {
            case Type T when T == typeof(UZeeman):
                return(CreateUZeeman(energy, color));

            default: throw new NotImplementedException();
            }
        }
        public IEnergy CreateAnisotropy(IMifEnergy energy, IColor color)
        {
            switch (energy.GetType())
            {
            case Type T when T == typeof(UniaxialAnisotropy):
                return(CreateUniaxialAnisotropy(energy, color));

            default: throw new NotImplementedException();
            }
        }
Ejemplo n.º 5
0
        private IEnergy CreateUZeeman(IMifEnergy energy, IColor color)
        {
            var zeeman = energy as UZeeman;
            List <(IEnergyPart, IEnergyPart)> energies = new List <(IEnergyPart, IEnergyPart)>();

            zeeman.PositionDestinationStepsList.ForEach(e =>
            {
                var part1 = _creator.Create(Enums.EnergyType.UZeeman, e.Item1.X, e.Item1.Y, e.Item1.Z, color, e.Item3, null);
                var part2 = _creator.Create(Enums.EnergyType.UZeeman, e.Item2.X, e.Item2.Y, e.Item2.Z, color, 0, null);
                energies.Add((part1, part2));
            });


            return(new SpintronicsZeeman(energy, energies));
        }
Ejemplo n.º 6
0
 private IEnergy CreateAnisotropy(IMifEnergy energy, IColor color)
 {
     return(_anisotropyCreator.CreateAnisotropy(energy, color));
 }
Ejemplo n.º 7
0
 private IEnergy CreateZeeman(IMifEnergy energy, IColor color)
 {
     return(_zeemanCreator.CreateZeeman(energy, color));
 }
 public SpintronicsExchange(IMifEnergy energy, IGraphicsObject graphic)
 {
     _energy  = energy;
     _graphic = graphic;
 }