//---------------------------------------
        // Comunication with Simulation Program
        //---------------------------------------

        //<Summary>
        //send value to simulation
        //</Summary>
        public override void sendToSim(sinter_InteractiveSim o_sim)
        {
            if ((mode != sinter_IOMode.si_OUT) && (!isSetting))
            {
                if (o_type == sinter_IOType.si_DY_DOUBLE)  //Really, only doubles support type conversion
                {
                    double t_value = ((double[])o_TimeSeriesValues)[o_TimeSeriesIndex];
                    t_value = unitsConversion(units, defaultUnits, t_value);

                    //Now that we have the correct converted value, pass it into each address inside the simulation
                    for (int addressIndex = 0; addressIndex <= (addressStrings.Length - 1); addressIndex++)
                    {
                        o_sim.sendValueToSim(addressStrings[addressIndex], t_value);
                    }
                }
                else if (o_type == sinter_IOType.si_DY_INTEGER)
                {
                    int t_value = ((int[])o_TimeSeriesValues)[o_TimeSeriesIndex];

                    //Now that we have the correct converted value, pass it into each address inside the simulation
                    for (int addressIndex = 0; addressIndex <= (addressStrings.Length - 1); addressIndex++)
                    {
                        o_sim.sendValueToSim(addressStrings[addressIndex], t_value);
                    }
                }
                else if (o_type == sinter_IOType.si_DY_STRING)
                {
                    string t_value = ((string[])o_TimeSeriesValues)[o_TimeSeriesIndex];

                    //Now that we have the correct converted value, pass it into each address inside the simulation
                    for (int addressIndex = 0; addressIndex <= (addressStrings.Length - 1); addressIndex++)
                    {
                        o_sim.sendValueToSim(addressStrings[addressIndex], t_value);
                    }
                }
                else
                {
                    throw new ArgumentException(string.Format("Invalid sinter_IOType passed to sinter_DynamicScalar.sendToSim", o_type));
                }
            }
        }
 //<Summary>
 //send value to simulation
 //</Summary>
 public virtual void sendToSim(sinter_InteractiveSim o_sim)
 {
     if ((mode != sinter_IOMode.si_OUT) && (!isSetting))
     {
         object t_value = o_value;
         if (o_type == sinter_IOType.si_DOUBLE)  //Really, only doubles support type conversion
         {
             t_value = unitsConversion(units, defaultUnits, Convert.ToDouble(o_value));
         }
         //Now that we have the correct converted value, pass it into each address inside the simulation
         for (int addressIndex = 0; addressIndex <= (addressStrings.Length - 1); addressIndex++)
         {
             o_sim.sendValueToSim(addressStrings[addressIndex], t_value);
         }
     }
 }