initialization.f90 2.59 KB
!
!_______________________________________________________________________
!
!               DESCRIPTION:
!               This is the initialization routine which  contains the 
!               initial spectrum construction, set initial values for arrays
!               and construct the ice transect.
!_______________________________________________________________________

                !INTERFACE:
                subroutine initialization

                !MODULE USES:
                use parameters

                !LOCAL PARAMETERS AND VARIABLES
                implicit none
                double precision, allocatable ::Gf(:),PM(:)
                integer ::X1

                allocate(Gf(nfreq))
                allocate(PM(nfreq))



!_________________________INITIAL SPECTRUM_____________________________

        E(1:nsteps,1:nbin,1:nfreq)=0d0  !INITIALIZE SPECTRUM ARRAY 
        
        if(init_spec.eq.1) then         !use JONSWAP spectrum

        do i=1,nfreq 
                if (freq(i).le.freq_s) then
                        sigma_s(i)=0.07
                else
                        sigma_s(i)=0.09
                end if
        end do

        Gf=gamma_s**(exp((-(freq-freq_s)**2)/(2*sigma_s**2*freq_s**2)))
        PM=alpha_s*Hs**2*(freq_s**4/freq**5)*exp(-beta_s*(freq_s/freq)**4)

        Ei=Gf*PM
        
        else                            !use bretschneider spectrum

        Ei=(1.25*Hs**2*(1/freq)**5)/(8*pi*Tm**4)*exp(-1.25*((1/freq)/Tm)**4)
        end if



        E(1,1,1:nfreq)=Ei               !initial spectrum

!_______________________________________________________________________

!_______________________ICE_TRANSECT____________________________________

X1=floor(X_ice/dx)      !find in which grid bin is the ice edge
C_ice(1:X1)=0           !ice concentration is 0 before ice edge!
C_ice(X1:nbin)=cice     !ice concentration in the transect

Dave(1:X1)=0            !initalize mean floe size before ice edge
Dmax(1:X1)=0            !initialize max floe size before ice edge
Dave(X1:nbin)=D0        !initalize mean floe size in ice transect
Dmax(X1:nbin)=D0        !initialize max floe size in ice transect

if (ice_thick.eq.0) then ! constant ice thickness in the transect

h(X1:nbin)=hice          
h(1:X1)=0d0             !0 before ice edge

else                    ! thickness is a function of distance from ice edge

h(1:X1)=0d0
        do jj=X1,nbin

                h(jj)=hmax*(0.1+0.9*(1-exp(-((real(jj)*dx-X_ice)/Xh))))

        end do

end if
        
!_____________________FSD_____________________________________________

FSD(1,1:nbin,1)=1d0

end subroutine initialization