[MITgcm-support] Barotropic ocean gyre tutorial

Jeremy Miller jeremysharonmiller at gmail.com
Sun Apr 4 01:55:38 EDT 2021


Dear Dr Rieck,

First of all my apologies for only replying now I was on holiday. And
thanks for your help.

Unfortunately that didn't solve the problem. After replacing

if sys.byteorder == 'little': tau_2.byteswap(True)
tau_2.tofile('windx_siny.bin')

with

if sys.byteorder == 'little': tau_2.byteswap(True)
fid = open('windx_siny.bin', 'wb')
tau_2.astype('float32').tofile(fid)

as you suggested, the plot still came out blank.
Regarding Jeffrey Scott's comment that the reason I could not read back the
bin file was due to a mismatch between float32 and float64, I followed his
advice and read in the
bin file using the snippet

tau_2_1 = np.fromfile('windx_siny.bin',dtype='float32')

and I got back an array with every entry being 'inf' except the penultimate
column, being all '0'.

Is it possible that the snippet

# X=X.astype('float128')
# Y=Y.astype('float128')

(which is commented) needs to be included but with 'float128' replaced with
'float32'?

Best
Jeremy





On Thu, 1 Apr 2021 at 16:47, Jan Klaus Rieck <jan.rieck at mail.mcgill.ca>
wrote:

> Hello Jeremy Miller,
>
> I also use python to to generate input data for the MITgcm. I found that,
> to generate files that can be read by the MITgcm consistently, I needed to
> specify the type explicitly.
> My way of saving the files would look like this in your case:
>
> if sys.byteorder == 'little': tau_2.byteswap(True)
> fid = open(''windx_siny.bin', 'wb')
> tau_2.astype('float32').tofile(fid)
>
> Of course, 'float32' could be replaced by 'float64' if you require double
> precision.
>
> I hope this helps,
> Jan Rieck
>
> On Thu, 2021-04-01 at 10:22 +0300, Jeremy Miller wrote:
>
> Dear MITGCM forum,
>
> I am Jeremy Miller, I am new to MITgcm and I've been going through the
> tutorials. I have a question about the "Barotropic Ocean Gyre" tutorial
> (section 4.1).
>
> I managed to compile and run the code, and re-produce the first two plots
> shown in section 4.1.5 for  wind stress of τ = τ0 cos( πy/Ly), for both the
> advection and non-advection cases (with the provided input binary files).
> I ran into problems when trying to produce the third plot, for the case
> where τ = τ0 sin( πy/Ly). I am a python user, so I translated gendata.m
> into python to write the input binary files 'windx_cosy.bin'
> 'windx_siny.bin' (see the file gendata_tut4.1py attached).  As explained in
> section 3.9 I've included the snippet
>
> if sys.byteorder == 'little': tau_2.byteswap(True)
>
> where "tau2" is the array to be output. There was no issue in the cosine
> wind stress, and I managed to reproduce the results that I got with the
> original 'windx_cosy.bin' provided in the tutorial. However, with the sine
> wind stress case, the output in 'Eta.0000077760.001.001' is all zeros.
>
> When I attempt to read  'windx_siny.bin' with python into a new array
> called tau2_1. I get absurdly big numbers back, which do not match the
> original array tau2 that I created. If I Remove the snippet " if
> sys.byteorder == 'little': tau_2.byteswap(True) ", in the python gendata
> code, tau2_1 and tau2 match. But, then when I run the code again, the
> file output.txt contains a long list of NaNs.
>
> I have also included the python code used to generate the plots in the
> file tut_4.1_plots.py
>
> Look forward to hearing from you.
> Yours sincerely
> Jeremy Miller
>
> _______________________________________________
>
> MITgcm-support mailing list
>
> MITgcm-support at mitgcm.org
>
>
> http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
>
>
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.mitgcm.org/pipermail/mitgcm-support/attachments/20210404/9d7b1079/attachment.html>


More information about the MITgcm-support mailing list