Skip to content

Commit

Permalink
Merge pull request #156 from n-claes/delta_prime
Browse files Browse the repository at this point in the history
B1' derived ef
  • Loading branch information
jordidj authored Jan 10, 2024
2 parents 5f8c87a + f22a762 commit 74f5e07
Show file tree
Hide file tree
Showing 15 changed files with 43 additions and 9 deletions.
1 change: 1 addition & 0 deletions post_processing/pylbo/visualisation/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ def ef_name_to_latex(
ef_name = ef_name.replace("curl", "\\nabla\\times")
ef_name = ef_name.replace("para", "\\parallel")
ef_name = ef_name.replace("perp", "\\perp")
ef_name = ef_name.replace("dB", "B^\\prime")
latex_name = rf"${ef_name}$"
if part != "":
latex_name = rf"{part}({latex_name})"
Expand Down
15 changes: 13 additions & 2 deletions src/eigenfunctions/mod_derived_ef_names.f08
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ module mod_derived_ef_names
character(len=str_len_arr), parameter, public :: v_perp_name = "v_perp"
character(len=str_len_arr), parameter, public :: curl_v_para_name = "(curl v)_para"
character(len=str_len_arr), parameter, public :: curl_v_perp_name = "(curl v)_perp"
character(len=str_len_arr), parameter, public :: dB1_name = "dB1"

character(len=:), allocatable :: state_vector(:)
logical :: can_get_pp
Expand Down Expand Up @@ -64,7 +65,8 @@ function create_and_set_derived_state_vector(settings, background) &
v_para_name, &
v_perp_name, &
curl_v_para_name, &
curl_v_perp_name &
curl_v_perp_name, &
dB1_name &
]
derived_state_vector_mask = [ &
can_get_entropy(), &
Expand All @@ -86,7 +88,8 @@ function create_and_set_derived_state_vector(settings, background) &
can_get_v_pp(), &
can_get_v_pp(), &
can_get_curl_v_pp(), &
can_get_curl_v_pp() &
can_get_curl_v_pp(), &
can_get_dB1() &
]
derived_state_vector = pack(derived_state_vector, mask=derived_state_vector_mask)

Expand Down Expand Up @@ -189,6 +192,14 @@ pure logical function can_get_curl_v_pp()
end function can_get_curl_v_pp


pure logical function can_get_dB1()
can_get_dB1 = ( &
is_in_state_vector("a2") &
.and. is_in_state_vector("a3") &
)
end function can_get_dB1


logical function can_calculate_pp_quantities(background)
use mod_function_utils, only: zero_func
use mod_logging, only: logger
Expand Down
22 changes: 22 additions & 0 deletions src/eigenfunctions/mod_derived_efs.f08
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,8 @@ subroutine set_function_pointer(this)
this%get_derived_ef => get_curl_v_para
case(curl_v_perp_name)
this%get_derived_ef => get_curl_v_perp
case(dB1_name)
this%get_derived_ef => get_dB1
case default
call logger%error( &
"derived ef assembly -- unknown eigenfunction name: "// trim(this%name) &
Expand Down Expand Up @@ -508,6 +510,26 @@ function get_curl_v_perp(settings, grid, eigenvector) result(curl_v_perp)
end function get_curl_v_perp


function get_dB1(settings, grid, eigenvector) result(dB1)
type(settings_t), intent(in) :: settings
type(grid_t), intent(in) :: grid
complex(dp), intent(in) :: eigenvector(:)
complex(dp) :: dB1(size(grid%ef_grid))
complex(dp) :: da2(size(grid%ef_grid))
complex(dp) :: a3(size(grid%ef_grid))
complex(dp) :: da3(size(grid%ef_grid))
real(dp) :: ef_eps(size(grid%ef_grid)), ef_deps

da2 = get_base_eigenfunction(sv_a2, settings, grid, eigenvector, diff_order=1)
a3 = get_base_eigenfunction(sv_a3, settings, grid, eigenvector)
da3 = get_base_eigenfunction(sv_a3, settings, grid, eigenvector, diff_order=1)
ef_eps = grid%get_eps(grid%ef_grid)
ef_deps = grid%get_deps()

dB1 = ic * (k2 * da3 / ef_eps - k3 * da2) - ic * k2 * ef_deps * a3 / ef_eps**2
end function get_dB1


function get_base_eigenfunction( &
sv_component, settings, grid, eigenvector, diff_order &
) result(base_ef)
Expand Down
2 changes: 1 addition & 1 deletion src/mod_version.f08
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ module mod_version
implicit none

!> legolas version number
character(len=10), parameter :: LEGOLAS_VERSION = "2.1.0"
character(len=10), parameter :: LEGOLAS_VERSION = "2.1.1"

end module mod_version
Binary file modified tests/regression_tests/baseline/BASE_couette_QR_k2_0_k3_1.dat
Binary file not shown.
Binary file modified tests/regression_tests/baseline/BASE_couette_SI_k2_0_k3_1.dat
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified tests/regression_tests/baseline/BASE_uni_adiab_QR_k2_0_k3_pi.dat
Binary file not shown.
Binary file not shown.
4 changes: 2 additions & 2 deletions tests/regression_tests/regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -309,8 +309,8 @@ def run_derived_eigenfunction_test(self, derived_eigenfunction, ds_test, ds_base
ds_base,
names_attr="derived_ef_names",
figname_prefix="derived_",
nb_plots=(5, 4),
figsize=(18, 10),
nb_plots=(5, 5),
figsize=(23, 10),
set_to_zero_tol=1e-8,
)
super().compare_test_images(
Expand Down
8 changes: 4 additions & 4 deletions tests/unit_tests/mod_test_eigenfunctions.pf
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ contains
call set_name("eigenfunctions - derived state vector (mhd)")
settings%io%write_derived_eigenfunctions = .true.
call eigenfunctions%initialise(eigenvals)
@assertEqual(12, size(settings%get_derived_state_vector()))
@assertEqual(13, size(settings%get_derived_state_vector()))
end subroutine test_ef_names_derived_mhd


Expand All @@ -138,7 +138,7 @@ contains
settings%io%write_derived_eigenfunctions = .true.
call use_bfield(use_b01=.false.)
call eigenfunctions%initialise(eigenvals)
@assertEqual(20, size(settings%get_derived_state_vector()))
@assertEqual(21, size(settings%get_derived_state_vector()))
end subroutine test_ef_names_derived_with_bfield

@test
Expand All @@ -148,7 +148,7 @@ contains
settings%io%write_derived_eigenfunctions = .true.
call use_bfield(use_b01=.true.)
call eigenfunctions%initialise(eigenvals)
@assertEqual(12, size(settings%get_derived_state_vector()))
@assertEqual(13, size(settings%get_derived_state_vector()))
end subroutine test_ef_names_derived_with_b01_field


Expand Down Expand Up @@ -177,6 +177,6 @@ contains
@assertTrue(allocated(eigenfunctions%base_efs))
@assertTrue(allocated(eigenfunctions%derived_efs))
@assertEqual(8, size(eigenfunctions%base_efs))
@assertEqual(12, size(eigenfunctions%derived_efs))
@assertEqual(13, size(eigenfunctions%derived_efs))
end subroutine test_eigenfunction_assembly_mhd
end module mod_test_eigenfunctions

0 comments on commit 74f5e07

Please sign in to comment.