• Main Page
  • Related Pages
  • Classes
  • Files
  • File List
  • File Members

ocsReduOptAmplifier.hh

Go to the documentation of this file.
00001 // $Id: 
00002 //###################################################################
00003 //
00004 //           Optical Communication Systems Simulator
00005 //
00006 //       Copyright (2000):
00007 //       Optical Fiber Communications Laboratory (OFCL)
00008 //       Computer Science & Electrical Engineering Department (CSEE)
00009 //       University of Maryland Baltimore County (UMBC)
00010 //
00011 //###################################################################
00012 
00013 #ifndef _OCS_REDU_OPT_AMPLIFIER_HH_
00014 #define _OCS_REDU_OPT_AMPLIFIER_HH_
00015 
00016 #ifndef _OCS_TYPE_AMPLIFIER_
00017 #define _OCS_TYPE_AMPLIFIER_
00018 
00019 enum typeAmplifier { NO_AMPLIFICATION = 0,
00020                      SCALAR_SIMPLE = 1, SCALAR_SATURATED = 2, 
00021                      VECTOR_SIMPLE = 3, VECTOR_SATURATED = 4, 
00022                      VECTOR_FIXED_OUTPUT_POWER = 5,
00023                      VECTOR_FIXED_TOTAL_OUTPUT_POWER = 6 };
00024 
00025 #ifndef _TYPE_AMPLIFIER_NOISE_
00026 #define _TYPE_AMPLIFIER_NOISE_
00027 
00028 enum typeAmplifierNoise { NOISE_OFF = 0, 
00029                           NOISE_ON_CONST_POWER_RANDOM_PHASE = 1,
00030                           NOISE_ON_GAUSSIAN_WHITE = 2, 
00031                           NOISE_ON_NO_RNG = 3,
00032                           NOISE_ON_SEMI_ANALYTICAL = 4, 
00033                           NOISE_ON_BIASED = 5}; 
00034                                                   
00035                                                           
00036 #endif // _TYPE_AMPLIFIER_NOISE_
00037 
00038 #endif /* _OCS_TYPE_AMPLIFIER_ */
00039 
00040 #include "ocsReduOptSignal.hh"
00041 #include "ocsReduPolDepAttenuator.hh"
00042 
00043 // ##############################################
00044 // #### Classes of objects for the reduced model
00045 // ##############################################
00046 
00047 // #### Class ReduOptAmplifier
00048 
00052 
00060 class ReduOptAmplifier
00061 {
00062    public:
00063   
00065  
00066      ReduOptAmplifier( string InFileName,
00067                     ReduOptSignal *oReduOptSignalTmp);
00068 
00070 
00071       ~ReduOptAmplifier();   
00072 
00074 
00089       void SetFixedOutputPowerFromCurrentOptSignal(void);
00090       void SetFixedTotalOutputPowerFromCurrentOptSignal(void)
00091            {SetFixedOutputPowerFromCurrentOptSignal();};
00092 
00094 
00095       void AmplifyOptSignal(void);     
00096 
00097   // ! \sa typeAmplifier TypeAmplifier
00098 
00099       void SetTypeAmplifier(typeAmplifier TypeAmplifier2);
00100 
00101       typeAmplifier GetTypeAmplifier(void)
00102              {return TypeAmplifier;};
00103 
00104 // ! \sa typeAmplifierNoise TypeAmplifierNoise
00105 
00106       void SetTypeAmplifierNoise(typeAmplifierNoise TypeAmplifierNoise2);
00107 
00108       void SetPolDepGain(double PolDepGainOptAmplifier2)
00109               {PolDepGainOptAmplifier = PolDepGainOptAmplifier2;};
00110 
00111       void SetGain(double dBGain2);
00112 
00113       double SteadyStateSaturatedGain(double InputPower);
00114 
00115       void SetGainCompressionSaturatedAmplifier(
00116                    double GainTarget_dB, double GainCompression_dB, 
00117                    double OutputPowerTarget);
00118 
00120 
00121       void SyncNumChannels(void);
00122       
00123 // ! \sa typeAmplifier TypeAmplifier
00124 
00125       string WriteTypeAmplifier(void);
00126 
00127 // ! \sa typeAmplifierNoise TypeAmplifierNoise
00128 
00129       string WriteTypeAmplifierNoise(void);
00130 
00132 
00133       void WriteSteadyStateGainVersusPower(string OutFileName,
00134                        double InputPowerMaxLinear, int NumPowerSteps);
00135 
00136 
00137       void WriteSteadyInputPowerVersusOutputPower(string OutFileName,
00138                    double InputPowerMaxLinear, int NumPowerSteps);
00139 
00141 
00142       double GetSaturatingPowerLinear(void){return SaturatingPowerLinear;}; 
00143 
00144       double GetPolDepGain(void) 
00145                 {return PolDepGainOptAmplifier;};
00146 
00147       double GetOutputPowerLinear(void)
00148              {return OutputPowerLinear;};
00149              
00150       double GetLinearGainOptAmplif(void)
00151             {return LinearGainOptAmplif;};           
00152 
00153    private:
00154 
00158 
00159       void AllocateNoiseAmplitudeChannels(void);
00160 
00162 
00163       void ReleaseMemory(void);
00164 
00165 
00167 
00168       void AddPolDepGainEffect(void);
00169 
00171 
00181       double GetGainFixedOutputPower(double InputPower);
00182 
00184       //double GetGainFixedOutputPowerDiffNoise( double InputPower);
00185 
00187 
00188       ReduOptSignal *oReduOptSignal;
00189 
00192 
00193       ReduPolDepAttenuator *oReduPolDepAttenuator;
00194 
00195 
00198 
00199       //double PolarizNoiseBandwidth;
00200 
00201       double StokesSignalTmp[4];
00202       double StokesNoiseTmp[4];           
00203 
00204       double CenterFreq;
00205       double ChannSpacing;
00206       int    NumChannels;
00207 
00208       double dBGain;         
00209 
00210 
00213 
00221       double OutputPowerLinear;
00222 
00224 
00225       double PolDepGainOptAmplifier;   
00226 
00228       double LinearGainOptAmplif; 
00229   
00230       double NoiseFigOptAmplifier;
00231       double LinearNoiseFigOptAmplif;
00232       double SpontaneousEmissionFactor;
00233 
00234       // ## variables for the saturation model 
00235 
00237       double AmpLength;  
00239       int NumZSteps;
00241       double SaturatingPower;
00243       double SaturatingPowerLinear;
00245       double SaturatingPowerdBm;
00247       double UnsaturatedGaindB;
00249       double UnsaturatedGainLinear;
00251       double UnsaturatedDifferentialGainLinear;
00252 
00255 
00262       double *NormalizedNoiseAmplitude;
00263 
00265 
00270       typeAmplifier TypeAmplifier;
00271     
00273 
00276       typeAmplifierNoise TypeAmplifierNoise;
00277     
00278       int DebugLevel;
00279 };
00280 
00281 #endif //_OCS_REDU_OPT_AMPLIFIER_HH_

Generated on Fri Jul 2 2010 12:57:48 for OCS by  doxygen 1.7.1