Lagrangian Floats

General scientific issues regarding ROMS

Moderators: arango, robertson

Post Reply
Message
Author
osean
Posts: 47
Joined: Sat Jan 23, 2021 3:46 pm
Location: MIT-WHOI

Lagrangian Floats

#1 Unread post by osean »

I am attempting to implement Lagrangian floats into my idealised simulations.

However after getting my head around the FLT_TEST case and playing with it a bit, I still cannot get my runs to work once I have the floats input set up.

Here is the log -

Code: Select all

 Operating system  : Linux
 CPU/hardware      : x86_64
 Compiler system   : gfortran
 Compiler command  : /usr/bin/gfortran
 Compiler flags    : -frepack-arrays -O3 -ffast-math -
 SVN Root URL      : https://www.myroms.org/svn/src/trunk
 SVN Revision      : 1084

 Local Root        : /home/schen/ROMS/trunk
 Header Dir        : /home/schen/ROMS/Projects/4k-lowres-float
 Header file       : flat_bottom.h
 Analytical Dir    : /home/schen/ROMS/Projects/4k-lowres-float

 Resolution, Grid 01: 100x50x50,  Parallel Threads: 1,  Tiling: 1x1


 Physical Parameters, Grid: 01
 =============================

       1440  ntimes            Number of timesteps for 3-D equations.
    600.000  dt                Timestep size (s) for 3-D equations.
         30  ndtfast           Number of timesteps for 2-D equations between
                                 each 3D timestep.
          1  ERstr             Starting ensemble/perturbation run number.
          1  ERend             Ending ensemble/perturbation run number.
          0  nrrec             Number of restart records to read from disk.
          T  LcycleRST         Switch to recycle time-records in restart file.
        288  nRST              Number of timesteps between the writing of data
                                 into restart fields.
          1  ninfo             Number of timesteps between print of information
                                 to standard output.
          1  nFLT              Number of timesteps between the writing of data
                                 into floats file.
          T  ldefout           Switch to create a new output NetCDF file(s).
          1  nHIS              Number of timesteps between the writing fields
                                 into history file.
          0  nQCK              Number of timesteps between the writing fields
                                 into quicksave file.
          1  ntsAVG            Starting timestep for the accumulation of output
                                 time-averaged data.
        144  nAVG              Number of timesteps between the writing of
                                 time-averaged data into averages file.
          0  ntsDIA            Starting timestep for the accumulation of output
                                 time-averaged diagnostics data.
          0  nDIA              Number of timesteps between the writing of
                                 time-averaged data into diagnostics file.
 1.0000E+01  nl_tnu2(01)       NLM Horizontal, harmonic mixing coefficient
                                 (m2/s) for tracer 01: temp
 1.0000E+01  nl_tnu2(02)       NLM Horizontal, harmonic mixing coefficient
                                 (m2/s) for tracer 02: salt
 1.0000E+01  nl_visc2          NLM Horizontal, harmonic mixing coefficient
                                 (m2/s) for momentum.
          F  LuvSponge         Turning OFF sponge on horizontal momentum.
          F  LtracerSponge(01) Turning OFF sponge on tracer 01: temp
          F  LtracerSponge(02) Turning OFF sponge on tracer 02: salt
 1.0000E-06  Akt_bak(01)       Background vertical mixing coefficient (m2/s)
                                 for tracer 01: temp
 1.0000E-06  Akt_bak(02)       Background vertical mixing coefficient (m2/s)
                                 for tracer 02: salt
 1.0000E-05  Akv_bak           Background vertical mixing coefficient (m2/s)
                                 for momentum.
 5.0000E-06  Akk_bak           Background vertical mixing coefficient (m2/s)
                                 for turbulent energy.
 5.0000E-06  Akp_bak           Background vertical mixing coefficient (m2/s)
                                 for turbulent generic statistical field.
      3.000  gls_p             GLS stability exponent.
      1.500  gls_m             GLS turbulent kinetic energy exponent.
     -1.000  gls_n             GLS turbulent length scale exponent.
 7.6000E-06  gls_Kmin          GLS minimum value of turbulent kinetic energy.
 1.0000E-12  gls_Pmin          GLS minimum value of dissipation.
 5.4770E-01  gls_cmu0          GLS stability coefficient.
 1.4400E+00  gls_c1            GLS shear production coefficient.
 1.9200E+00  gls_c2            GLS dissipation coefficient.
-4.0000E-01  gls_c3m           GLS stable buoyancy production coefficient.
 1.0000E+00  gls_c3p           GLS unstable buoyancy production coefficient.
 1.0000E+00  gls_sigk          GLS constant Schmidt number for TKE.
 1.3000E+00  gls_sigp          GLS constant Schmidt number for PSI.
   1400.000  charnok_alpha     Charnok factor for Zos calculation.
      0.500  zos_hsig_alpha    Factor for Zos calculation using Hsig(Awave).
      0.250  sz_alpha          Factor for Wave dissipation surface tke flux .
    100.000  crgban_cw         Factor for Craig/Banner surface tke flux.
 3.0000E-04  rdrg              Linear bottom drag coefficient (m/s).
 3.0000E-03  rdrg2             Quadratic bottom drag coefficient.
 2.0000E-02  Zob               Bottom roughness (m).
 2.0000E-02  Zos               Surface roughness (m).
          2  Vtransform        S-coordinate transformation equation.
          4  Vstretching       S-coordinate stretching function.
 2.0000E+00  theta_s           S-coordinate surface control parameter.
 4.0000E+00  theta_b           S-coordinate bottom  control parameter.
    250.000  Tcline            S-coordinate surface/bottom layer width (m) used
                                 in vertical coordinate stretching.
   1025.000  rho0              Mean density (kg/m3) for Boussinesq approximation.
      0.000  dstart            Time-stamp assigned to model initialization (days).
       0.00  time_ref          Reference time for units attribute (yyyymmdd.dd)
 0.0000E+00  Tnudg(01)         Nudging/relaxation time scale (days)
                                 for tracer 01: temp
 0.0000E+00  Tnudg(02)         Nudging/relaxation time scale (days)
                                 for tracer 02: salt
 0.0000E+00  Znudg             Nudging/relaxation time scale (days)
                                 for free-surface.
 0.0000E+00  M2nudg            Nudging/relaxation time scale (days)
                                 for 2D momentum.
 0.0000E+00  M3nudg            Nudging/relaxation time scale (days)
                                 for 3D momentum.
 0.0000E+00  obcfac            Factor between passive and active
                                 open boundary conditions.
          F  VolCons(1)        NLM western  edge boundary volume conservation.
          F  VolCons(2)        NLM southern edge boundary volume conservation.
          F  VolCons(3)        NLM eastern  edge boundary volume conservation.
          F  VolCons(4)        NLM northern edge boundary volume conservation.
     14.000  T0                Background potential temperature (C) constant.
     35.000  S0                Background salinity (PSU) constant.
   1027.000  R0                Background density (kg/m3) used in linear Equation
                                 of State.
 1.7000E-04  Tcoef             Thermal expansion coefficient (1/Celsius).
 0.0000E+00  Scoef             Saline contraction coefficient (1/PSU).
      1.000  gamma2            Slipperiness variable: free-slip (1.0) or 
                                                      no-slip (-1.0).
          F  LuvSrc            Turning OFF momentum point Sources/Sinks.
          F  LwSrc             Turning OFF volume influx point Sources/Sinks.
          F  LtracerSrc(01)    Turning OFF point Sources/Sinks on tracer 01: temp
          F  LtracerSrc(02)    Turning OFF point Sources/Sinks on tracer 02: salt
          F  LsshCLM           Turning OFF processing of SSH climatology.
          F  Lm2CLM            Turning OFF processing of 2D momentum climatology.
          F  Lm3CLM            Turning OFF processing of 3D momentum climatology.
          F  LtracerCLM(01)    Turning OFF processing of climatology tracer 01: temp
          F  LtracerCLM(02)    Turning OFF processing of climatology tracer 02: salt
          F  LnudgeM2CLM       Turning OFF nudging of 2D momentum climatology.
          F  LnudgeM3CLM       Turning OFF nudging of 3D momentum climatology.
          F  LnudgeTCLM(01)    Turning OFF nudging of climatology tracer 01: temp
          F  LnudgeTCLM(02)    Turning OFF nudging of climatology tracer 02: salt

          T  Hout(idFsur)      Write out free-surface.
          T  Hout(idUvel)      Write out 3D U-momentum component.
          T  Hout(idVvel)      Write out 3D V-momentum component.
          T  Hout(idWvel)      Write out W-momentum component.
          T  Hout(idTvar)      Write out tracer 01: temp
          T  Hout(idDano)      Write out density anomaly.

          T  Aout(idFsur)      Write out averaged free-surface.
          T  Aout(idUbar)      Write out averaged 2D U-momentum component.
          T  Aout(idVbar)      Write out averaged 2D V-momentum component.
          T  Aout(idUvel)      Write out averaged 3D U-momentum component.
          T  Aout(idVvel)      Write out averaged 3D V-momentum component.
          T  Aout(idu3dE)      Write out averaged 3D U-eastward  at RHO-points.
          T  Aout(idv3dN)      Write out averaged 3D V-northward at RHO-points.
          T  Aout(idWvel)      Write out averaged W-momentum component.
          T  Aout(idTvar)      Write out averaged tracer 01: temp
          T  Aout(id3dRV)      Write out averaged 3D relative vorticity.
          T  Aout(id3dPV)      Write out averaged 3D potential vorticity.

          1  inp_lib           Using standard NetCDF library for input files.
          1  out_lib           Using standard NetCDF library for output files.

 Output/Input Files:

               Output Restart File:  roms_rst.nc
               Output History File:  roms_his.nc
              Output Averages File:  roms_avg.nc
           Output Diagnostics File:  roms_dia.nc
                Output Floats File:  roms_flt.nc
     Initial Floats Positions File:  floats.in
  ROMS I/O variables Metadata File:  /home/schen/ROMS/trunk/ROMS/External/varinfo.dat

 Tile partition information for Grid 01:  100x50x50  tiling: 1x1

     tile     Istr     Iend     Jstr     Jend     Npts

        0        1      100        1       50   250000

 Tile minimum and maximum fractional coordinates for Grid 01:
   (interior points only)

     tile     Xmin     Xmax     Ymin     Ymax     grid

        0    -1.50   102.50     0.50    51.50  RHO-points

        0    -2.00   102.00     0.50    51.50    U-points

        0    -1.50   102.50     0.00    51.00    V-points

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x7f67deee2820 in ???
#1  0x7f67deee19c5 in ???
#2  0x7f67deb7f03f in ???
#3  0x5633e8883ce2 in ???
#4  0x5633e8865715 in ???
#5  0x5633e86f6f71 in ???
#6  0x5633e86f67bb in ???
#7  0x7f67deb66564 in ???
#8  0x5633e86f695d in ???
#9  0xffffffffffffffff in ???
Segmentation fault (core dumped)
It looks like something is not right after building the grid.

In my .h file I made sure FLOATS is defined. And in the roms.in file, I also have the correct FPOSNAM file name.

I am wondering if there is something I am missing here. Can't quite figure it out. Appreciate any helping hand...

User avatar
arango
Site Admin
Posts: 1347
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: Lagrangian Floats

#2 Unread post by arango »

Your log file doesn't give us useful information about the segmentation fault. In cases like this, it is useful to compile with the debug option (-g) in the build script:

Code: Select all

 export         USE_DEBUG=on
which usually gives better information than the optimized code. Try a different compiler if gfortran doesn't give you any information. That's what we do during debugging. I suspect something wrong with your configuration, but the information you are getting is not helpful. It can be anywhere.

Also, you are using an older version of ROMS. Nowadays, we use a YAML file varinfo.yaml.

osean
Posts: 47
Joined: Sat Jan 23, 2021 3:46 pm
Location: MIT-WHOI

Re: Lagrangian Floats

#3 Unread post by osean »

I am currently trying to set up a field of floats at initial condition.

My thought is to have in total 8000 floats, filling up an 2D field with 200 x 40 floats along x and y direction.

However it is not so clear in float.in file how I can set up something like this.
! Number of floats to release in each nested grid. These values are
! essential because the FLOATS structure in "mod_floats" is dynamically
! allocated using these values, [1:Ngrids].

NFLOATS == 8000

! Initial floats locations for all grids:
!
! G Nested grid number
! C Initial horizontal coordinate type (0: grid units, 1: spherical)
! T Float trajectory type (1: Lagrangian, 2: isobaric, 3: Geopotential)
! N Number floats to be released at (Fx0,Fy0,Fz0)
! Ft0 Float release time (days) after model initialization
! Fx0 Initial float X-location (grid units or longitude)
! Fy0 Initial float Y-location (grid units or latitude)
! Fz0 Initial float Z-location (grid units or depth)
! Fdt Float cluster release time interval (days)
! Fdx Float cluster X-distribution parameter
! Fdy Float cluster Y-distribution parameter
! Fdz Float cluster Z-distribution parameter

POS = G, C, T, N, Ft0, Fx0, Fy0, Fz0, Fdt, Fdx, Fdy, Fdz

1 0 1 8000 0.0d0 1.0d0 1.0d0 1.d0 0.d0 1.d0 1.0d0 0.d0
This instead gives me a 1D line of floats going in diagonal direction, rather than a field of floats that I am trying to get.

What do I need to put in the POS line in order to get a 2D field of floats?

User avatar
kate
Posts: 4088
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: Lagrangian Floats

#4 Unread post by kate »

It won't do what you want as easily as all that. You have to have 40 different lines with 200 floats each (or vice versa).

Post Reply