Minh Duc Nguyen
Joined: 15 Apr 2010 Posts: 6
|
Posted: Thu Jun 06, 2013 12:33 pm Post subject: function inlining |
|
|
Hello,
I'm trying to inline the following function
| Code: | subroutine slope_wsm3(qrs,den,denfac,t,rslope,rslopeb,rslope2,rslope3,vt,its,ite,kts,kte)
IMPLICIT NONE
INTEGER :: its,ite, jts,jte, kts,kte
REAL, DIMENSION( its:ite , kts:kte ) :: &
qrs, &
den, &
denfac, &
t, &
rslope, &
rslopeb, &
rslope2, &
rslope3, &
vt
REAL, PARAMETER :: t0c = 273.15
REAL, DIMENSION( its:ite , kts:kte ) :: &
n0sfac
REAL :: lamdar,lamdas,x, y, z, supcol, pvt
integer :: i, j, k
!----------------------------------------------------------------
! size distributions: (x=mixing ratio, y=air density):
! valid for mixing ratio > 1.e-9 kg/kg.
!
lamdar(x,y)= sqrt(sqrt(pidn0r/(x*y))) ! (pidn0r/(x*y))**.25
lamdas(x,y,z)= sqrt(sqrt(pidn0s*z/(x*y))) ! (pidn0s*z/(x*y))**.25
!
do k = kts, kte
do i = its, ite
if(t(i,k).ge.t0c) then
pvt = pvtr
if(qrs(i,k).le.qcrmin)then
rslope(i,k) = rslopermax
rslopeb(i,k) = rsloperbmax
rslope2(i,k) = rsloper2max
rslope3(i,k) = rsloper3max
else
rslope(i,k) = 1./lamdar(qrs(i,k),den(i,k))
rslopeb(i,k) = exp(log(rslope(i,k))*(bvtr))
rslope2(i,k) = rslope(i,k)*rslope(i,k)
rslope3(i,k) = rslope2(i,k)*rslope(i,k)
endif
else
supcol = t0c-t(i,k)
n0sfac(i,k) = max(min(exp(alpha*supcol),n0smax/n0s),1.)
pvt = pvts
if(qrs(i,k).le.qcrmin)then
rslope(i,k) = rslopesmax
rslopeb(i,k) = rslopesbmax
rslope2(i,k) = rslopes2max
rslope3(i,k) = rslopes3max
else
rslope(i,k) = 1./lamdas(qrs(i,k),den(i,k),n0sfac(i,k))
rslopeb(i,k) = exp(log(rslope(i,k))*(bvts))
rslope2(i,k) = rslope(i,k)*rslope(i,k)
rslope3(i,k) = rslope2(i,k)*rslope(i,k)
endif
endif
vt(i,k) = pvt*rslopeb(i,k)*denfac(i,k)
if(qrs(i,k).le.0.0) vt(i,k) = 0.0
enddo
enddo
END subroutine slope_wsm3
|
with these compilation options
| Code: | -Minline=levels:10,reshape,name:nisflv_rain_plm,slope_wsm3 -Mipa=fast,inline
|
but the compiler says
| Code: | slope_wsm3:
699, subprogram not inlineable -- contains data, save, or equivalence |
How should I understand this diagnostic message and how should I change this function to get it be inlined?
Thanks. |
|