Skip to content
Snippets Groups Projects
Commit 84976472 authored by Бычкова Виктория's avatar Бычкова Виктория
Browse files

add ddt

parent 118e183b
No related branches found
No related tags found
No related merge requests found
#!/bin/bash
rm drag_ddt.exe *.o
gfortran -c inputdata.f90
gfortran -c param.f90
gfortran -c prmt.f90
gfortran -c drag3.f90
gfortran -c main_drag.f90
gfortran -o drag_ddt.exe main_drag.o drag3.o inputdata.o param.o prmt.o
drag3.f90 0 → 100644
module DRAG3
USE PRMT
USE PARAM
USE INPUTDATA
!implicit real (A-H, O-Z)
implicit none
type, public:: DATA_IN
real, public:: WS, DT, ST, DQ, CFLH, Z0IN
end type
type, public:: DATA_OUTDEF
real, public:: ZL, RI, RE, LNZUZT, ZU, ZTOUT, RITH, CM, CH, CT, CKT
end type
type, public:: DATA_PAR
integer, public :: IT=10
end type
contains
subroutine surf_flux(in, out, par)
type (DATA_IN) , intent(in) :: in
type (DATA_OUTDEF) out
type (DATA_PAR) par
real WS, DT, ST, DQ, CFLH, Z0IN
integer IT
real ZL, RI, RE, LNZUZT, ZU, ZTIN, RI_TH, CM, CH, CT, CKT
real Z0, D3, D0MAX, U1, A1, Y1, CIMIN, H1, AP0, F, A2, C1, U2, H0, U3, X7, X8, AN1, AN2, D0, D00, ZT, H00, FT0, AN4, AN5
real AL, AL2, AN, G, T1, R6, Q4, T4, U, G0, R1, F0, F4, A0, AM, O, DD, X1, Y0, X0, Z3, Y10, A2CH, X10, P1, P0, H, D1, F1
real D, C4, C1MIN, C0, C, B1, AN0
integer i, j, m
WS=in%WS
DT=in%DT
ST=in%ST
DQ=in%DQ
CFLH=in%CFLH
Z0IN=in%Z0IN
IT=par%IT
U=WS
T4=DT
T1=ST
Q4=DQ
H=CFLH
Z0=Z0IN
D3=0.0E0
D0MAX=2.0E0
!=DATA_IN%WS
!4=DATA_IN%DT
!4=DATA_IN%DQ
!=DATA_IN%CFLH
!0=DATA_IN%Z0
IF(Z0.LT.0.0E0) D0MAX=8.0E0
IF(Z0.LT.0.0E0) THEN
! ......DEFINITION Z0 OF SEA SURFACE......
!call Z0SEA module (RAMIL_DASHA)
!U1=U
!A1=0.0E0
!Y1=25.0E0
!C1MIN=ALOG(H1/1.0E0)/AP0
!DO 630 I=1,IT
!F=A2-2.0E0*ALOG(U1)
!DO 570 J=1,IT
!C1=(F+2.0E0*ALOG(Y1))/AP0
!IF(U.LE.8.0E0) A1=ALOG(1.0E0+A3*((Y1/U1)**3))/AP0
!C1=C1-A1
!C1=AMAX1(C1,C1MIN)
!Y1=C1
!570 CONTINUE
! Z0=H1*EXP(-C1*AP0)
! Z0=AMAX1(Z0,0.000015E0)
! U2=U*ALOG(H1/Z0)/(ALOG(H/Z0))
! U1=U2
!630 CONTINUE
! J=1
! H0=H/Z0
! U3=U1/C1
! ELSE
! ......PARAMETERS FROM VISCOSITY SUBLAYER......
! J=0
! H0=H/Z0
! U3=U*AP0/ALOG(H0)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
END IF
X7=U3*Z0/AN
IF(X7.LE.X8) THEN
D0=AN1*ALOG(AL1*X7)+AN2
ELSE
D0=AL2*(X7**0.45E0)
END IF
! ......HUMIDITY STRATIFICATION AND RI-NUMBER......
ST=in%ST
AL=G/T1
D0=AMIN1(D0,D0MAX)
R6=AL*H*(T4+0.61E0*T1*Q4)/U**2
D00=D0
ZT=Z0/EXP(D00)
H00=H/ZT
FT0=ALOG(H00)
! ......DEFINITION OF R-PRIM......
AN4=D1/H0
AN5=D1/H00
!C IF(D0.EQ.0.0E0) AN5=AN4
IF (ABS(D0).LT.1.0E-10) AN5=AN4
AN5=SQRT(1.0E0-G0*AN5)
AN4=(1.0E0-G4*AN4)**0.25E0
F0=ALOG((X10-1.0E0)*(AN5+1.0E0)/((X10+1.0E0)*(AN5-1.0E0)))/A0
F4=2.0E0*(ATAN(Y10)-ATAN(AN4))+ALOG((Y10-1.0E0)*(AN4+1.0E0)/((Y10+1.0E0)*(AN4-1.0E0)))
R1=D1*F0/(F4*F4)
! ......DEFINITION OF DZ,TA,FU,FO,FIU,FIO......
IF(R6.GT.0.0E0) GO TO 1460
IF(R6.LT.R1) GO TO 1305
IF(R6.GT.-0.001E0) THEN
! ......NEARLY NEUTRAL......
write (*,*) 'NEUTRAL'
F4=ALOG(H0)
F0=FT0/A0
! IF(D0.EQ.0.0E0) F0=F4/A0
IF (ABS(D0).LT.1.0E-10) F0=F4/A0
AM=1.0E0
O=1.0E0/A0
GO TO 1570
ELSE
! ......WEEK AND SEMISTRONG INSTABILITY......
write (*,*) 'SEMISTRONG'
F1=ALOG(H0)
! IF(D0.EQ.0.0E0)FT0=F1
IF (ABS(D0).LT.1.0E-10) FT0=F1
D3=R6*A0*F1**2/FT0
M=1
1245 DO 1300 I=1,IT
D=D3/H0
DD=D3/H00
! IF(D0.EQ.0.0E0)DD=D
IF (ABS(D0).LT.1.0E-10) DD=D
Y1=(1.0E0-G4*D3)**0.25E0
X1=SQRT(1.0E0-G0*D3)
Y0=(1.0E0-G4*D)**0.25E0
X0=SQRT(1.0E0-G0*DD)
Y0=AMAX1(Y0,1.000001E0)
X0=AMAX1(X0,1.000001E0)
F4=ALOG((Y1-1.0E0)*(Y0+1.0E0)/((Y1+1.0E0)*(Y0-1.0E0)))+2.0E0*(ATAN(Y1)-ATAN(Y0))
F0=ALOG((X1-1.0E0)*(X0+1.0E0)/((X1+1.0E0)*(X0-1.0E0)))/A0
IF(M.NE.1) GO TO 1350
Z3=R6*F4**2/F0
D3=Z3
1300 CONTINUE
M=2
GO TO 1245
1350 AM=(1.0E0-G4*D3)**(-0.25E0)
O=1.0E0/(A0*SQRT(1.0E0-G0*D3))
GO TO 1570
END IF
! ......STRONG INSTABILITY.....
1305 CONTINUE
write (*,*) 'INSTABILITY'
D3=D1
M=1
1355 DO 1410 I=1,IT
D=D3/H0
DD=D3/H00
! IF(D0.EQ.0.0E0)DD=D
IF (ABS(D0).LT.1.0E-10) DD=D
A1=(D1/D3)**(1.0E0/3.0E0)
X0=SQRT(1.0E0-G0*DD)
Y0=(1.0E0-G4*D)**0.25E0
C=ALOG((X0+1.0E0)/(X0-1.0E0))
B1=-2.0E0*ATAN(Y0)+ALOG((Y0+1.0E0)/(Y0-1.0E0))
F=3.0E0*(1.0E0-A1)
F4=F/Y10+P1+B1
F0=(F/X10+P0+C)/A0
IF(M.NE.1) GO TO 1430
Z3=R6*F4**2/F0
D3=Z3
1410 CONTINUE
M=2
GO TO 1355
1430 AM=A1/Y10
O=A1/(A0*X10)
GO TO 1570
! ......STABLE STRATIFICATION......
1460 CONTINUE
write (*,*) 'STABLE'
R6=AMIN1(R6,R0)
F=ALOG(H0)
F1=D0/F
A1=B4*R6
A2CH=(F1+1.0E0)/A0-2.0E0*A1
D3=F*(SQRT(A2CH**2+4.0E0*A1*(1.0E0-A1))-A2CH)/(2.0E0*B4*(1.0E0-A1))
F1=B4*D3
F4=F+F1
F0=(F+D0)/A0+F1
O=1.0E0/A0+F1
AM=1.0E0+F1
1570 CONTINUE
! ......COMPUTATION OF CU,CO,K(H),ALFT
C4=AP0/F4
C0=AP0/F0
AN4=AP0*C4*U*H/AM
AN0=AM/O
! ......EXIT......
140 CONTINUE
out%ZL=D3
out%RI=R6
out%RE=X7
out%LNZUZT=D00
out%ZU=Z0
out%ZTOUT=ZT
out%RITH=R1
out%CM=C4
out%CH=C0
out%CT=AN4
out%CKT=AN0
return
end subroutine surf_flux
end module DRAG3
\ No newline at end of file
...@@ -2,10 +2,6 @@ module INPUTDATA ...@@ -2,10 +2,6 @@ module INPUTDATA
REAl, DIMENSION (6) :: AR1 REAl, DIMENSION (6) :: AR1
REAl, DIMENSION (11) :: AR2 REAl, DIMENSION (11) :: AR2
INTEGER, PARAMETER :: IT =1 INTEGER, PARAMETER :: IT =1
INTEGER, PARAMETER :: N=7094
REAL HFX, MFX, zL, betta
REAL U, T4,C0,C4, T1,H
REAL ws, deltaT, semisumT
!C*==================================================================== !C*====================================================================
!C* .....DEFENITION OF DRAG AND HEAT EXCHANGE COEFFICIENTS...... = !C* .....DEFENITION OF DRAG AND HEAT EXCHANGE COEFFICIENTS...... =
!C* DETAILS OF ALGORITM ARE GIVEN IN: = !C* DETAILS OF ALGORITM ARE GIVEN IN: =
......
program main_ddt
USE PRMT
USE PARAM
USE INPUTDATA
use DRAG3
type (DATA_IN):: DATA_IN1
type (DATA_OUTDEF) :: DATA_OUTDEF1
type (DATA_PAR) :: DATA_PAR1
OPEN (1,FILE='4_ddt.txt')
DO I = 1,1000000
READ (1,*,END=100) DATA_IN1%WS, DATA_IN1%DT
call surf_flux(DATA_IN1, DATA_OUTDEF1, DATA_PAR1)
ENDDO
100 CONTINUE
10 FORMAT (4I4,5F7.1,F7.4,F7.1)
20 FORMAT (4I4,5F7.1,F7.4,F7.1)
stop
end program
module PARAM module PARAM
IMPLICIT REAL (A-H,O-Z) IMPLICIT REAL (A-H,O-Z)
real, parameter :: RO = 1.2
real, parameter :: CP =8.4
real, parameter :: AKA=.40E0 real, parameter :: AKA=.40E0
real, parameter :: AP0=.40E0 real, parameter :: AP0=.40E0
real, parameter :: G=9.81E0 real, parameter :: G=9.81E0
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment