예제 #1
0
 private static DrudeLorentzSolver getMaterial(DrudeLorentzFactor drudeLorentzParam)
 {
     return(new DrudeLorentzSolver(drudeLorentzParam)
     {
         IsBody = true
     });
 }
예제 #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DrudeLorentzSolver" /> class.
        /// </summary>
        /// <param name="param">The parameter.</param>
        public DrudeLorentzSolver(DrudeLorentzFactor param)
            : base(param)
        {
            this.param = param;

            this.SampledLorentzDomain  = new CartesianCoordinate[param.OscillatorCount];
            this.SampledLorentzDomain1 = new CartesianCoordinate[param.OscillatorCount];
            this.SampledLorentzDomain2 = new CartesianCoordinate[param.OscillatorCount];
        }
예제 #3
0
        private static IMediumSolver[,,] setSphere(
            SimulationParameters parameters,
            DrudeLorentzFactor drudeLorentzParam,
            VacuumSolver vacuum)
        {
            const double Radius = 10;

            var centerIndices = parameters.Indices.GetCenter();
            var center        = new CartesianCoordinate(centerIndices.ILength, centerIndices.JLength, centerIndices.KLength);

            return(parameters.Indices.CreateArray <IMediumSolver>(
                       (i, j, k) =>
            {
                var point = new CartesianCoordinate(i, j, k) - center;
                if (point.Norm <= Radius)
                {
                    return getMaterial(drudeLorentzParam);
                }
                return vacuum;
            }));
        }