43 USE yomhook
,ONLY : lhook, dr_hook
44 USE parkind1
,ONLY : jprb
55 TYPE(ocean_t),
INTENT(INOUT) :: o
58 REAL,
DIMENSION(SIZE(O%XSEAT(:,1)),NOCKMIN:NOCKMAX) :: zseadens
59 REAL,
DIMENSION(SIZE(O%XSEAT(:,1))) :: zrho0,zrhocmo,zdrhox,ztcmo
60 REAL,
DIMENSION(SIZE(O%XSEAT(:,1))) :: ztmoy,zsmoy,zumoy,zvmoy,zdmoy
61 INTEGER,
DIMENSION(SIZE(O%XSEAT(:,1))) :: ihmolevel
62 INTEGER :: inbpts, ik1, ik2
64 REAL(KIND=JPRB) :: zhook_handle
68 IF (lhook) CALL dr_hook(
'DIAG_INLINE_OCEAN_N',0,zhook_handle)
69 IF (dgo%LDIAG_OCEAN)
THEN
74 inbpts=
SIZE(o%XSEAT(:,1))
76 zseadens(:,:)=xrhoswref + &
77 (o%XSEAT(:,:)-13.5)*(-0.19494-0.49038e-2*(o%XSEAT(:,:)-13.5))&
78 +0.77475*(o%XSEAS(:,:)-32.6)
85 o%XSEAHMO(jpt)=-xzhoc(nockmin+2)
86 ztcmo(jpt)=o%XSEAT(jpt,ik1)-0.5
87 zrhocmo(jpt)=xrhoswref+
drhocompute(ztcmo(jpt),o%XSEAS(jpt,ik1))
89 zrho0(jpt)=xrhoswref+
drhocompute(o%XSEAT(jpt,j),o%XSEAS(jpt,j))
90 zdrhox(jpt)=zrho0(jpt)-zrhocmo(jpt)
91 IF ((zdrhox(jpt)<0.).AND.(o%XSEABATH(jpt,j)/=0.))
THEN
92 o%XSEAHMO(jpt)=o%XSEAHMO(jpt)+xdz1(j)
97 o%XSEAHMO(jpt)=min(o%XSEAHMO(jpt),-s%XSEABATHY(jpt))
99 ihmolevel(jpt)=nockmax
102 IF (-xzhoc(j)>o%XSEAHMO(jpt))
THEN
110 IF (ihmolevel(jpt)<=1)
THEN
111 dgo%XTOCMOY(jpt)=o%XSEAT(jpt,ik1)
112 dgo%XSOCMOY(jpt)=o%XSEAS(jpt,ik1)
113 dgo%XUOCMOY(jpt)=o%XSEAU(jpt,ik1)
114 dgo%XVOCMOY(jpt)=o%XSEAV(jpt,ik1)
115 dgo%XDOCMOY(jpt)=zseadens(jpt,ik1)
117 ztmoy(jpt)=o%XSEAT(jpt,ik1)
118 zsmoy(jpt)=o%XSEAS(jpt,ik1)
119 zumoy(jpt)=o%XSEAU(jpt,ik1)
120 zvmoy(jpt)=o%XSEAV(jpt,ik1)
121 zdmoy(jpt)=zseadens(jpt,ik1)
122 DO j=ik2,ihmolevel(jpt)
123 ztmoy(jpt)=ztmoy(jpt)+o%XSEAT(jpt,j)*(-xzhoc(j)+xzhoc(j-1))
124 zsmoy(jpt)=zsmoy(jpt)+o%XSEAS(jpt,j)*(-xzhoc(j)+xzhoc(j-1))
125 zumoy(jpt)=zumoy(jpt)+o%XSEAU(jpt,j)*(-xzhoc(j)+xzhoc(j-1))
126 zvmoy(jpt)=zvmoy(jpt)+o%XSEAV(jpt,j)*(-xzhoc(j)+xzhoc(j-1))
127 zdmoy(jpt)=zdmoy(jpt)+zseadens(jpt,j)*(-xzhoc(j)+xzhoc(j-1))
129 dgo%XTOCMOY(jpt)=ztmoy(jpt)/(-xzhoc(ihmolevel(jpt)))
130 dgo%XSOCMOY(jpt)=zsmoy(jpt)/(-xzhoc(ihmolevel(jpt)))
131 dgo%XUOCMOY(jpt)=zumoy(jpt)/(-xzhoc(ihmolevel(jpt)))
132 dgo%XVOCMOY(jpt)=zvmoy(jpt)/(-xzhoc(ihmolevel(jpt)))
133 dgo%XDOCMOY(jpt)=zdmoy(jpt)/(-xzhoc(ihmolevel(jpt)))
141 IF (lhook) CALL dr_hook(
'DIAG_INLINE_OCEAN_N',1,zhook_handle)
186 REAL(KIND=JPRB) :: zhook_handle
191 IF (lhook) CALL dr_hook(
'DRHOCOMPUTE',0,zhook_handle)
194 r = det*(-0.19494-0.49038e-2*det)+0.77475*des
195 IF (lhook) CALL dr_hook(
'DRHOCOMPUTE',1,zhook_handle)
subroutine diag_inline_ocean_n(DGO, O, S)
real function drhocompute(T, S)