diff --git a/Makefile.Defines b/Makefile.Defines index e764b40ee..4e3ead7c5 100644 --- a/Makefile.Defines +++ b/Makefile.Defines @@ -67,13 +67,13 @@ GWARNINGS = -Wall -Warray-bounds -Wimplicit-interface -Wextra -Warray-temporari GPRODUCTION = -O3 -ffree-line-length-none $(GPAR) #FFLAGS = $(IDEBUG) $(HEAPARR) $(SIMDVEC) $(PAR) -FFLAGS = $(IPRODUCTION) $(OPTREPORT) -FORTRAN = ifort +#FFLAGS = $(IPRODUCTION) -g -traceback $(OPTREPORT) +#FORTRAN = ifort #AR = xiar -#FORTRAN = gfortran +FORTRAN = gfortran #FFLAGS = $(GDEBUG) $(GMEM) $(GPAR) -#FFLAGS = $(GPRODUCTION) +FFLAGS = $(GPRODUCTION) AR = ar # DO NOT include in CFLAGS the "-c" option to compile object only diff --git a/examples/symba_mars_disk/testnetcdf.ipynb b/examples/symba_mars_disk/testnetcdf.ipynb index 405947b38..50ac91b3b 100644 --- a/examples/symba_mars_disk/testnetcdf.ipynb +++ b/examples/symba_mars_disk/testnetcdf.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -11,7 +11,7 @@ "'/home/daminton/git/swiftest/examples/symba_mars_disk'" ] }, - "execution_count": 1, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -405,28 +405,25 @@ " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", - "
<xarray.DataArray 'origin_type' (id: 1533)>\n",
-       "array(['Initial conditions', 'Initial conditions', 'Initial conditions',\n",
-       "       ..., 'Disruption', 'Disruption', 'Disruption'], dtype='<U18')\n",
+       "
<xarray.DataArray 'npl' (time: 2)>\n",
+       "array([1500, 1518], dtype=int32)\n",
        "Coordinates:\n",
-       "  * id       (id) int32 0 1 2 3 4 5 6 7 ... 1526 1527 1528 1529 1530 1531 1532
" + " * time (time) float64 0.0 6e+03
" ], "text/plain": [ - "\n", - "array(['Initial conditions', 'Initial conditions', 'Initial conditions',\n", - " ..., 'Disruption', 'Disruption', 'Disruption'], dtype='\n", + "array([1500, 1518], dtype=int32)\n", "Coordinates:\n", - " * id (id) int32 0 1 2 3 4 5 6 7 ... 1526 1527 1528 1529 1530 1531 1532" + " * time (time) float64 0.0 6e+03" ] }, - "execution_count": 3, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "sim.ds['origin_type']" + "sim.ds['npl']" ] }, { diff --git a/src/kick/kick.f90 b/src/kick/kick.f90 index 19d717b0d..f2c49ad06 100644 --- a/src/kick/kick.f90 +++ b/src/kick/kick.f90 @@ -98,7 +98,9 @@ module subroutine kick_getacch_int_all_pl(npl, nplpl, k_plpl, x, Gmass, radius, if (rji2 > rlim2) call kick_getacch_int_one_pl(rji2, xr, yr, zr, Gmass(i), Gmass(j), ahi(1,i), ahi(2,i), ahi(3,i), ahj(1,j), ahj(2,j), ahj(3,j)) end do !$omp end parallel do + !$omp parallel workshare acc(:,1:npl) = acc(:,1:npl) + ahi(:,1:npl) + ahj(:,1:npl) + !$omp end parallel workshare return end subroutine kick_getacch_int_all_pl diff --git a/src/modules/swiftest_classes.f90 b/src/modules/swiftest_classes.f90 index 75b792b57..ec1a3e9df 100644 --- a/src/modules/swiftest_classes.f90 +++ b/src/modules/swiftest_classes.f90 @@ -160,12 +160,17 @@ module swiftest_classes !> Class definition for the particle origin information object. This object is used to track time, location, and collisional regime !> of fragments produced in collisional events. type :: swiftest_particle_info - character(len=NAMELEN) :: name !! Non-unique name - character(len=NAMELEN) :: particle_type !! String containing a description of the particle type (e.g. Central Body, Massive Body, Test Particle) - character(len=NAMELEN) :: origin_type !! String containing a description of the origin of the particle (e.g. Initial Conditions, Supercatastrophic, Disruption, etc.) - real(DP) :: origin_time !! The time of the particle's formation - real(DP), dimension(NDIM) :: origin_xh !! The heliocentric distance vector at the time of the particle's formation - real(DP), dimension(NDIM) :: origin_vh !! The heliocentric velocity vector at the time of the particle's formation + character(len=NAMELEN) :: name !! Non-unique name + character(len=NAMELEN) :: particle_type !! String containing a description of the particle type (e.g. Central Body, Massive Body, Test Particle) + character(len=NAMELEN) :: origin_type !! String containing a description of the origin of the particle (e.g. Initial Conditions, Supercatastrophic, Disruption, etc.) + real(DP) :: origin_time !! The time of the particle's formation + real(DP), dimension(NDIM) :: origin_xh !! The heliocentric distance vector at the time of the particle's formation + real(DP), dimension(NDIM) :: origin_vh !! The heliocentric velocity vector at the time of the particle's formation + real(DP) :: discard_time !! The time of the particle's discard + character(len=NAMELEN) :: status !! Particle status description: Active, Merged, Fragmented, etc. + real(DP), dimension(NDIM) :: discard_xh !! The heliocentric distance vector at the time of the particle's discard + real(DP), dimension(NDIM) :: discard_vh !! The heliocentric velocity vector at the time of the particle's discard + integer(I4B) :: discard_body_id !! The id of the other body involved in the discard (0 if no other body involved) contains procedure :: dump => io_dump_particle_info !! Dumps contents of particle information to file procedure :: read_in => io_read_in_particle_info !! Read in a particle information object from an open file @@ -844,7 +849,6 @@ module subroutine kick_getacch_int_all_pl(npl, nplpl, k_plpl, x, Gmass, radius, end subroutine kick_getacch_int_all_pl module pure subroutine kick_getacch_int_one_pl(rji2, xr, yr, zr, Gmi, Gmj, axi, ayi, azi, axj, ayj, azj) - !$omp declare simd(kick_getacch_int_one_pl) implicit none real(DP), intent(in) :: rji2 !! Square of distance between the two bodies real(DP), intent(in) :: xr, yr, zr !! Distances between the two bodies in x, y, and z directions @@ -855,7 +859,6 @@ module pure subroutine kick_getacch_int_one_pl(rji2, xr, yr, zr, Gmi, Gmj, axi, end subroutine kick_getacch_int_one_pl module pure subroutine kick_getacch_int_one_tp(rji2, xr, yr, zr, Gmpl, ax, ay, az) - !$omp declare simd(kick_getacch_int_one_tp) implicit none real(DP), intent(in) :: rji2 !! Square of distance between the test particle and massive body real(DP), intent(in) :: xr, yr, zr !! Distances between the two bodies in x, y, and z directions