Skip to content

Commit

Permalink
Merge pull request #34 from jbusecke/activate_threadsafe
Browse files Browse the repository at this point in the history
added threadsafe to skin and noskin signature files
  • Loading branch information
jbusecke authored Jun 22, 2022
2 parents dc6a227 + f2aa472 commit 2c0c68c
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 4 deletions.
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,16 @@ git clone --recursive [email protected]:xgcm/aerobulk-python.git
```
b. Manual version (you will have to install the python module separately)
```
python -m numpy.f2py --verbose -c --f90flags="-fdefault-real-8 -ffree-line-length-200 --std=gnu" ./source/fortran/aerobulk/src/mod_const.f90 ./source/fortran/aerobulk/src/mod_phymbl.f90 ./source/fortran/aerobulk/src/mod_skin_coare.f90 ./source/fortran/aerobulk/src/mod_skin_ecmwf.f90 ./source/fortran/aerobulk/src/mod_blk_andreas.f90 ./source/fortran/aerobulk/src/mod_common_coare.f90 ./source/fortran/aerobulk/src/mod_blk_coare3p0.f90 ./source/fortran/aerobulk/src/mod_blk_coare3p6.f90 ./source/fortran/aerobulk/src/mod_blk_ecmwf.f90 ./source/fortran/aerobulk/src/mod_blk_ncar.f90 ./source/fortran/aerobulk/src/mod_blk_neutral_10m.f90 ./source/fortran/aerobulk/src/mod_aerobulk_compute.f90 ./source/fortran/aerobulk/src/mod_aerobulk.f90 ./source/fortran/mod_aerobulk_wrap.f90 ./source/fortran/mod_aerobulk_wrap.pyf
python -m numpy.f2py --verbose -c --f90flags="-fdefault-real-8 -ffree-line-length-200 --std=gnu" ./source/fortran/aerobulk/src/mod_const.f90 ./source/fortran/aerobulk/src/mod_phymbl.f90 ./source/fortran/aerobulk/src/mod_skin_coare.f90 ./source/fortran/aerobulk/src/mod_skin_ecmwf.f90 ./source/fortran/aerobulk/src/mod_blk_andreas.f90 ./source/fortran/aerobulk/src/mod_common_coare.f90 ./source/fortran/aerobulk/src/mod_blk_coare3p0.f90 ./source/fortran/aerobulk/src/mod_blk_coare3p6.f90 ./source/fortran/aerobulk/src/mod_blk_ecmwf.f90 ./source/fortran/aerobulk/src/mod_blk_ncar.f90 ./source/fortran/aerobulk/src/mod_blk_neutral_10m.f90 ./source/fortran/aerobulk/src/mod_aerobulk_compute.f90 ./source/fortran/aerobulk/src/mod_aerobulk.f90 ./source/fortran/mod_aerobulk_wrap_skin.f90 ./source/fortran/mod_aerobulk_wrap_skin.pyf
```
and

```
python -m numpy.f2py --verbose -c --f90flags="-fdefault-real-8 -ffree-line-length-200 --std=gnu" ./source/fortran/aerobulk/src/mod_const.f90 ./source/fortran/aerobulk/src/mod_phymbl.f90 ./source/fortran/aerobulk/src/mod_skin_coare.f90 ./source/fortran/aerobulk/src/mod_skin_ecmwf.f90 ./source/fortran/aerobulk/src/mod_blk_andreas.f90 ./source/fortran/aerobulk/src/mod_common_coare.f90 ./source/fortran/aerobulk/src/mod_blk_coare3p0.f90 ./source/fortran/aerobulk/src/mod_blk_coare3p6.f90 ./source/fortran/aerobulk/src/mod_blk_ecmwf.f90 ./source/fortran/aerobulk/src/mod_blk_ncar.f90 ./source/fortran/aerobulk/src/mod_blk_neutral_10m.f90 ./source/fortran/aerobulk/src/mod_aerobulk_compute.f90 ./source/fortran/aerobulk/src/mod_aerobulk.f90 ./source/fortran/mod_aerobulk_wrap_noskin.f90 ./source/fortran/mod_aerobulk_wrap_noskin.pyf
```
4. Make sure things work
```
pytest test/test.py
pytest tests/test_fortran.py
```
🎉

Expand Down
2 changes: 2 additions & 0 deletions source/aerobulk/flux.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ def skin_np(
evap : numpy.array
evaporation [mm/s] aka [kg/m^2/s] (usually <0, as ocean loses water!)
"""
print()

(
ql,
qh,
Expand Down
1 change: 1 addition & 0 deletions source/fortran/mod_aerobulk_wrap_noskin.pyf
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ python module mod_aerobulk_wrap_noskin ! in
use mod_aerobulk, only: aerobulk_init,aerobulk_bye
use mod_aerobulk_compute
subroutine aerobulk_model_noskin(ni,nj,nt,calgo,zt,zu,sst,t_zt,hum_zt,u_zu,v_zu,slp,niter,ql,qh,tau_x,tau_y,evap) ! in :mod_aerobulk_wrap_noskin:mod_aerobulk_wrap_noskin.f90:mod_aerobulk_wrapper_noskin
threadsafe
integer, optional,intent(in),check(shape(sst, 0) == ni),depend(sst) :: ni=shape(sst, 0)
integer, optional,intent(in),check(shape(sst, 1) == nj),depend(sst) :: nj=shape(sst, 1)
integer, optional,intent(in),check(shape(sst, 2) == nt),depend(sst) :: nt=shape(sst, 2)
Expand Down
1 change: 1 addition & 0 deletions source/fortran/mod_aerobulk_wrap_skin.pyf
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ python module mod_aerobulk_wrap_skin ! in
use mod_aerobulk, only: aerobulk_init,aerobulk_bye
use mod_aerobulk_compute
subroutine aerobulk_model_skin(ni,nj,nt,calgo,zt,zu,sst,t_zt,hum_zt,u_zu,v_zu,slp,rad_sw,rad_lw,niter,ql,qh,tau_x,tau_y,t_s,evap) ! in :mod_aerobulk_wrap_skin:mod_aerobulk_wrap_skin.f90:mod_aerobulk_wrapper_skin
threadsafe
integer, optional,intent(in),check(shape(sst, 0) == ni),depend(sst) :: ni=shape(sst, 0)
integer, optional,intent(in),check(shape(sst, 1) == nj),depend(sst) :: nj=shape(sst, 1)
integer, optional,intent(in),check(shape(sst, 2) == nt),depend(sst) :: nt=shape(sst, 2)
Expand Down
7 changes: 5 additions & 2 deletions tests/test_flux_xr.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,11 @@ def test_algo_error_skin(algo):
skin(*args, algo=algo)


@pytest.mark.parametrize("chunks", [{"dim_2": -1}, {"dim_0": 10}, {"dim_2": 10}])
@pytest.mark.parametrize("skin_correction", [True, False])
@pytest.mark.parametrize(
"chunks", [{"dim_2": -1}, {"dim_0": 10}, {"dim_0": 1}, {"dim_2": 8}, {"dim_2": 1}]
)
# @pytest.mark.parametrize("skin_correction", [True, False])
@pytest.mark.parametrize("skin_correction", [False])
class Test_xarray:
def test_chunked(self, chunks, skin_correction):
shape = (10, 13, 12)
Expand Down

0 comments on commit 2c0c68c

Please sign in to comment.