コード例 #1
0
ファイル: Temperature.cs プロジェクト: SpiceSharp/SpiceSharp
        /// <summary>
        /// Initializes a new instance of the <see cref="Temperature" /> class.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="context"/> is <c>null</c>.</exception>
        public Temperature(ParallelBindingContext context)
            : base(context)
        {
            var parameters = context.GetParameterSet <Parameters>();

            if (parameters.WorkDistributors.TryGetValue(typeof(ITemperatureBehavior), out var dist))
            {
                _workload = new Workload(dist, parameters.Entities.Count);
            }
        }
コード例 #2
0
ファイル: Time.cs プロジェクト: saugkim/aaa_SpiceSharp
        /// <summary>
        /// Initializes a new instance of the <see cref="Time" /> class.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="context"/> is <c>null</c>.</exception>
        public Time(ParallelBindingContext context)
            : base(context)
        {
            var parameters = context.GetParameterSet <Parameters>();

            if (parameters.WorkDistributors.TryGetValue(typeof(ITimeBehavior), out var dist) && dist != null)
            {
                _initWorkload = new Workload(dist, parameters.Entities.Count);
            }
        }
コード例 #3
0
 /// <inheritdoc/>
 public virtual void FetchBehaviors(ParallelBindingContext context)
 {
     _updateBehaviors = context.GetBehaviors <IFrequencyUpdateBehavior>();
     if (_updateWorkload != null)
     {
         foreach (var behavior in _updateBehaviors)
         {
             _updateWorkload.Actions.Add(behavior.Update);
         }
     }
 }
コード例 #4
0
ファイル: Accept.cs プロジェクト: SpiceSharp/SpiceSharp
        /// <summary>
        /// Initializes a new instance of the <see cref="Accept" /> class.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="context"/> is <c>null</c>.</exception>
        public Accept(ParallelBindingContext context)
            : base(context)
        {
            var parameters = context.GetParameterSet <Parameters>();

            if (parameters.WorkDistributors.TryGetValue(typeof(IAcceptBehavior), out var dist))
            {
                _probeWorkload  = new Workload(dist, parameters.Entities.Count);
                _acceptWorkload = new Workload(dist, parameters.Entities.Count);
            }
        }
コード例 #5
0
ファイル: Time.cs プロジェクト: SpiceSharp/SpiceSharp
 /// <inheritdoc />
 public void FetchBehaviors(ParallelBindingContext context)
 {
     _timeBehaviors = context.GetBehaviors <ITimeBehavior>();
     if (_initWorkload != null)
     {
         foreach (var behavior in _timeBehaviors)
         {
             _initWorkload.Actions.Add(behavior.InitializeStates);
         }
     }
 }
コード例 #6
0
ファイル: Temperature.cs プロジェクト: SpiceSharp/SpiceSharp
 /// <inheritdoc/>
 public virtual void FetchBehaviors(ParallelBindingContext context)
 {
     _behaviors = context.GetBehaviors <ITemperatureBehavior>();
     if (_workload != null)
     {
         foreach (var behavior in _behaviors)
         {
             _workload.Actions.Add(behavior.Temperature);
         }
     }
 }
コード例 #7
0
 /// <inheritdoc/>
 public virtual void FetchBehaviors(ParallelBindingContext context)
 {
     _biasingBehaviors = context.GetBehaviors <IBiasingBehavior>();
     if (_loadWorkload != null)
     {
         foreach (var behavior in _biasingBehaviors)
         {
             _loadWorkload.Actions.Add(behavior.Load);
         }
     }
 }
コード例 #8
0
 /// <inheritdoc />
 public override void FetchBehaviors(ParallelBindingContext context)
 {
     base.FetchBehaviors(context);
     _convergenceBehaviors = context.GetBehaviors <IConvergenceBehavior>();
     if (_convergenceWorkload != null)
     {
         foreach (var behavior in _convergenceBehaviors)
         {
             _convergenceWorkload.Functions.Add(behavior.IsConvergent);
         }
     }
 }
コード例 #9
0
ファイル: Noise.cs プロジェクト: SpiceSharp/SpiceSharp
        /// <summary>
        /// Initializes a new instance of the <see cref="Noise" /> class.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="context"/> is <c>null</c>.</exception>
        public Noise(ParallelBindingContext context)
            : base(context)
        {
            var parameters = context.GetParameterSet <Parameters>();

            if (parameters.WorkDistributors.TryGetValue(typeof(INoiseBehavior), out var dist) && dist != null)
            {
                _noiseInitializeWorkload = new Workload(dist, parameters.Entities.Count);
                _noiseComputeWorkload    = new Workload(dist, parameters.Entities.Count);
                if (context.TryGetState(out INoiseSimulationState parent))
                {
                    context.AddLocalState <INoiseSimulationState>(new NoiseSimulationState(parent));
                }
            }
        }
コード例 #10
0
ファイル: Frequency.cs プロジェクト: saugkim/aaa_SpiceSharp
        /// <summary>
        /// Initializes a new instance of the <see cref="Frequency" /> class.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="context"/> is <c>null</c>.</exception>
        public Frequency(ParallelBindingContext context)
            : base(context)
        {
            var parameters = context.GetParameterSet <Parameters>();

            if (parameters.WorkDistributors.TryGetValue(typeof(IFrequencyBehavior), out var dist) && dist != null)
            {
                _initWorkload = new Workload(dist, parameters.Entities.Count);
                _loadWorkload = new Workload(dist, parameters.Entities.Count);
                if (context.TryGetState(out IComplexSimulationState parent))
                {
                    context.AddLocalState <IComplexSimulationState>(_state = new ComplexSimulationState(parent));
                }
            }
        }
コード例 #11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Convergence" /> class.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="context"/> is <c>null</c>.</exception>
        public Convergence(ParallelBindingContext context)
            : base(context)
        {
            var parameters = context.GetParameterSet <Parameters>();

            if (parameters.WorkDistributors.TryGetValue(typeof(IConvergenceBehavior), out var dist) && dist != null)
            {
                _convergenceWorkload = new Workload <bool>((IWorkDistributor <bool>)dist, parameters.Entities.Count);
                if (context.TryGetState <IIterationSimulationState>(out var parent))
                {
                    if (!(parent is IterationSimulationState))
                    {
                        context.AddLocalState <IIterationSimulationState>(new IterationSimulationState(parent));
                    }
                }
            }
        }
コード例 #12
0
ファイル: Noise.cs プロジェクト: SpiceSharp/SpiceSharp
 /// <inheritdoc/>
 public virtual void FetchBehaviors(ParallelBindingContext context)
 {
     _noiseBehaviors = context.GetBehaviors <INoiseBehavior>();
     if (_noiseInitializeWorkload != null)
     {
         foreach (var behavior in _noiseBehaviors)
         {
             _noiseInitializeWorkload.Actions.Add(behavior.Initialize);
         }
     }
     if (_noiseComputeWorkload != null)
     {
         foreach (var behavior in _noiseBehaviors)
         {
             _noiseComputeWorkload.Actions.Add(behavior.Compute);
         }
     }
 }
コード例 #13
0
ファイル: Accept.cs プロジェクト: SpiceSharp/SpiceSharp
 /// <inheritdoc/>
 public virtual void FetchBehaviors(ParallelBindingContext context)
 {
     _acceptBehaviors = context.GetBehaviors <IAcceptBehavior>();
     if (_acceptWorkload != null)
     {
         foreach (var behavior in _acceptBehaviors)
         {
             _acceptWorkload.Actions.Add(behavior.Accept);
         }
     }
     if (_probeWorkload != null)
     {
         foreach (var behavior in _acceptBehaviors)
         {
             _probeWorkload.Actions.Add(behavior.Probe);
         }
     }
 }
コード例 #14
0
ファイル: Frequency.cs プロジェクト: saugkim/aaa_SpiceSharp
 /// <inheritdoc/>
 public virtual void FetchBehaviors(ParallelBindingContext context)
 {
     _frequencyBehaviors = context.GetBehaviors <IFrequencyBehavior>();
     if (_initWorkload != null)
     {
         foreach (var behavior in _frequencyBehaviors)
         {
             _initWorkload.Actions.Add(behavior.InitializeParameters);
         }
     }
     if (_loadWorkload != null)
     {
         foreach (var behavior in _frequencyBehaviors)
         {
             _loadWorkload.Actions.Add(behavior.Load);
         }
     }
 }
コード例 #15
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Biasing" /> class.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="context"/> is <c>null</c>.</exception>
        public Biasing(ParallelBindingContext context)
            : base(context)
        {
            var parameters = context.GetParameterSet <Parameters>();

            if (parameters.WorkDistributors.TryGetValue(typeof(IBiasingBehavior), out var dist) && dist != null)
            {
                _loadWorkload = new Workload(dist, parameters.Entities.Count);
                if (context.TryGetState(out IBiasingSimulationState bparent))
                {
                    context.AddLocalState <IBiasingSimulationState>(_state = new BiasingSimulationState(bparent));
                }
                if (context.TryGetState(out IIterationSimulationState cparent))
                {
                    context.AddLocalState <IIterationSimulationState>(new IterationSimulationState(cparent));
                }
            }
        }