[ncl-talk] using TEOS10 software with NCL

Mary Haley haley at ucar.edu
Wed Feb 25 08:54:21 MST 2015


Hi William,

I am not familiar with the "selected_real_kind" syntax in Fortran 90, but
after reading about it, I don't think you can interface to it directly
using WRAPIT, because of its arbitrary precision potential.

When you declare something as a "double precision" in your WRAPIT stub,
then NCL is going to assume an 8-byte floating point number. If you then
pass this 8-byte number to a routine that turns it into something with a
different number of bytes of precision, then it doesn't surprise me that
the return result is incorrect.

To get something that matches a true double precision, I think you need to
use "selected_real_kind(15, 307)" or "real(kind(0.0d0))"

I would love to have a look at this further, if you could provide me with
some sample code that uses the Fortran 90 version of this function.  Or, do
you know if there's a version of this code that uses the more traditional
real and double precision Fortran definitions?

--Mary


On Tue, Feb 24, 2015 at 9:00 AM, william.llovel at cerfacs.fr <
llovel at cerfacs.fr> wrote:

> Dear all,
>
> I am an oceanographer and a new NCL user. I am interested in the ocean
> heat content change and its contribution to sea level.
> Thus, I need to compute some parameters as density, heat capacity
> etc.... For that, I need to use the equation of state of the ocean.
> The recommendation is now to consider the TEOS-10 software available at
> http://www.teos-10.org/ .
> This website provides a set of fortran90 functions and subroutines.
> I have tried to call them using the WRAPIT command :
> https://www.ncl.ucar.edu/Document/Tools/WRAPIT.shtml#Step_1
> first, by creating a stub file and then, runing the WRAPIT command.
> Unfortunately, this does not work. the results are wrong and totally
> unphysical.
>
> this is why I am contacting you and asking your help.
>
> Below is an example of the F90 function.
>
> !==========================================================================
> function gsw_sa_from_sp(sp,p,lon,lat)
> !==========================================================================
>
> ! Calculates Absolute Salinity, SA, from Practical Salinity, SP
> !
> ! sp     : Practical Salinity                              [unitless]
> ! p      : sea pressure                                    [dbar]
> ! lon   : lonitude                                       [DEG E]
> ! lat    : latitude                                        [DEG N]
> !
> ! gsw_sa_from_sp   : Absolute Salinity                     [g/kg]
>
> implicit none
> integer, parameter :: r14 = selected_real_kind(14,30)
>
> real (r14) :: sp, lon, lat, p, gsw_sa_from_sp, gsw_saar, saar
> real (r14) :: gsw_sa_baltic, gsw_sa_from_sp_baltic
>
> saar = gsw_saar(p,lon,lat)
>
> gsw_sa_from_sp = (35.16504d0/35.d0)*sp*(1.d0 + saar)
> !==========================================================================
>
> And my stub file before invoking WRAPIT.
>
> !==========================================================================
> C NCLFORTSTART
>        function gsw_sa_from_sp(sp,p,lon,lat)
>        double precision sp, lon, lat, p
> C NCLEND
> !==========================================================================
>
> I am able to run the WRAPIT command and create the file.so, but when I
> try to call a function or subroutine with NCL, the results are totally
> wrong.
>
> I think this is because of this line : integer, parameter :: r14 =
> selected_real_kind(14,30) in the F90 functions that defines my variables.
>
> If you have any idea on how I could resolve this issue, I will be more
> than happy to hear from you.
>
> This toolbox is very important for any oceanographer. So, implementing
> this toolbox into NCL will motive more researchers to use your software.
>
> Thanks for your help,
>
> Best regards,
>
> William
>
>
>
>
>
>
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150225/334d2340/attachment.html 


More information about the ncl-talk mailing list