############################################################################## # Flags: nomenu, noprompt, nomessage, # ############################################################################## # section: -pexcitation # ############################################################################## # port = undefined # # mode = 1 # # amplitude = 1.0 # # phase = 0.0 # # frequency = undefined # # bandwidth = undefined # # risetime = 0.0 # # signalcommand= -none- # ############################################################################## # nextport, list, ?, return, help # ##############################################################################
port= NAME-OF-AN-ALREADY-DEFINED-PORT:
mode:
amplitude:
phase:
frequency:
bandwidth:
risetime:
list:
signalcommand= NAME_OF_COMMAND:
-none- the excitation will be computed from
risetime, frequency, bandwidth and amplitude.
If specified as any other string, every 100 timesteps the specified
command is executed to compute the signal at the next 100 timesteps.
The command is executed as:
NAME_OF_COMMAND < ./gdfidl-actual-time-interval > ./gdfidl-actual-signal
The file ./gdfidl-actual-time-interval contains the following data:
iTime1, iTime2, TimeStep
iTime1: The number of the first timestep for which
the signal shall be defined.
iTime2: The number of the last timestep for which
the signal shall be defined.
TimeStep: The width of a timestep.
Beta, Alpha, DeltaZ.
Beta: The real part of the propagation constant of the
selected mode at the selected
frequency frequency.
Alpha: The imaginary part of the propagation constant.
DeltaZ: The width of the mesh at the selected port.
NAME_OF_COMMAND has to write to stdout
simply the values of the signal at the timesteps iTime1 to
iTime2, one line for each value.
nextport:
port, mode, amplitude and phase,
but the parameters frequency, bandwidth and risetime
are the same for all excited ports.
InputPort shall be excited.
Its amplitude shall be '1', the centerfrequency of the excited pulse shall be
1.2 GHz, and the bandwidth of the excited pulse shall be 0.7 GHz.
-fdtd,
-pexcitation
port= InputPort
mode= 1
amplitude= 1
frequency= 1.2e+9
bandwidth= 0.7e+9
InputPort1 shall be excited.
Its amplitude shall be '1', the frequency of the excited signal shall be
1.2 GHz, and the risetime until steady state of the excitation shall be
10 HF-periods.
In addition, the fundamental mode of the port with name
InputPort2 shall be excited. Amplitude shall be '1'.
-fdtd,
-pexcitation
port= InputPort1, mode= 1, amplitude= 1, phase= 0
frequency= 1.2e9, risetime= 10 / 1.2e9
nextport
port= InputPort2, mode= 1, amplitude= 1, phase= 0
Example
The following specifies that the fundamental mode of the port with name
InputPort shall be excited.
The portmode shall be computed for a frequency of 10 GHz,
and the signal of the excitation shall be defined by an external signal
command.
-fdtd,
-pexcitation
port= InputPort
mode= 1
amplitude= 1
frequency= 10 GHz
#
# compile the signalcommand
#
system(f90 signal-command.f -o signal-command)
signalcommand= ./signal-command
This is the sourcefile signal-command.f:
PROGRAM SignalCommand
IMPLICIT DOUBLE PRECISION (a-h,o-z)
Pi= 4*ATAN(1.0d0)
Frequency= 10e9
TRise= 10/Frequency
TDecay= 20/Frequency
THold= 50/Frequency
READ (*,*) iTime1, iTime2, TimeStep
READ (*,*) Beta, Alpha, DeltaZ
DO iTime= iTime1, iTime2, 1
ActualTime= iTime*TimeStep
IF (ActualTime .LE. TRise) THEN
Phi= ActualTime * Pi / TRise
Factor= (1-COS(Phi))/2
ELSE IF (ActualTime .LE. TRise+THold) THEN
Factor= 1
ELSE IF (ActualTime .LE. TRise+THold+TDecay) THEN
Phi= (ActualTime - (TRise+THold)) * Pi / TDecay
Factor= (1+COS(Phi))/2
ELSE
Factor= 0
ENDIF
Factor= Factor * TimeStep / DeltaZ
WRITE (*,*) Factor*SIN(2*Pi*Frequency*ActualTime)
ENDDO
END PROGRAM SignalCommand