#$ #$=head1 NAME #$ #$helix - module containing allocate and deallocate of a helix filter #$ #$=head1 SYNOPSIS #$ #$C #$ #$C #$ #$=head1 INPUT PARAMETERS #$ #$=over 4 #$ #$=item aa - type(helix) #$ #$ Filter #$ #$=item nh - integer #$ #$ Number of coefs in filter #$ #$=back #$ #$=head1 DESCRIPTION #$ #$Allocate and deallocation of helix filter. #$ #$=head1 COMMENTS #$ #$type(filter) : #$ #$=over 4 #$ #$=item flt - C (nh) #$ #$ filter coefficients #$ #$=item lag - C (nh) #$ #$ filter lags #$ #$=item mis - C (nd) #$ #$ boundary conditions #$ #$=back #$ #$=head1 SEE ALSO #$ #$L,L #$ #$=head1 LIBRARY #$ #$B #$ #$=cut module helix { # DEFINE helix filter type type filter { real, dimension( :), pointer :: flt # (nh) filter coefficients integer, dimension( :), pointer :: lag # (nh) filter lags logical, dimension( :), pointer :: mis # (nd) boundary conditions } contains subroutine allocatehelix( aa, nh ) { # allocate a filter type( filter) :: aa integer :: nh # count of filter coefs (excl 1) allocate( aa%flt( nh), aa%lag( nh)) # allocate filter and lags. nullify( aa%mis) # set null pointer for "mis". aa%flt = 0. # zero filter coef values } subroutine deallocatehelix( aa) { # destroy a filter type( filter) :: aa deallocate( aa%flt, aa%lag) # free memory if( associated( aa%mis)) # if logicals were allocated deallocate( aa%mis) # free them } }