Add an eigenpairs data to file
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex, | intent(in) | :: | eval | |||
logical, | intent(in) | :: | has_phi | |||
logical, | intent(in) | :: | has_apar | |||
logical, | intent(in) | :: | has_bpar | |||
type(EigNetcdfID), | intent(inout) | :: | IDs | |||
real, | intent(in), | optional | :: | my_conv |
subroutine add_eigenpair_to_file(eval, has_phi, has_apar, has_bpar, IDs, my_conv)
#ifdef NETCDF
use fields_arrays, only: phinew, aparnew, bparnew
use convert, only: c2r
use theta_grid, only: ntgrid
use neasyf, only: neasyf_write
use optionals, only: get_option_with_default
#endif
complex, intent(in) :: eval !Note just use fields to get eigenvectors
real, intent(in), optional :: my_conv
type(EigNetcdfID), intent(inout) :: IDs
logical, intent(in) :: has_phi, has_apar, has_bpar
#ifdef NETCDF
real, dimension(2) :: ri_omega
real, dimension(:,:), allocatable :: ri_field
integer, dimension(3) :: start_field, count_field
real :: local_conv
character(*), dimension(*), parameter :: eigen_field_dim_names = [character(len=5)::"ri", "theta", "conv"]
!First increment counter
IDs%nconv_count=IDs%nconv_count+1
start_field = [1, 1, IDs%nconv_count]
count_field = [2, 2*ntgrid+1, 1]
local_conv = get_option_with_default(my_conv, real(IDs%nconv_count))
call neasyf_write(IDs%ncid, "conv", local_conv, dim_names=["conv"], &
start=[IDs%nconv_count])
!/Omega
ri_omega(1)=real(eval)
ri_omega(2)=aimag(eval)
call neasyf_write(IDs%ncid, "omega", ri_omega, dim_names=["ri ", "conv"], &
start=[1, IDs%nconv_count], count=[2,1])
!/Fields
allocate(ri_field(2,2*ntgrid+1))
if(has_phi)then
call c2r(phinew(:,1,1),ri_field)
call neasyf_write(IDs%ncid, "phi", ri_field, dim_names=eigen_field_dim_names, &
start=start_field, count=count_field)
endif
if(has_apar)then
call c2r(aparnew(:,1,1),ri_field)
call neasyf_write(IDs%ncid, "apar", ri_field, dim_names=eigen_field_dim_names, &
start=start_field, count=count_field)
endif
if(has_bpar)then
call c2r(bparnew(:,1,1),ri_field)
call neasyf_write(IDs%ncid, "bpar", ri_field, dim_names=eigen_field_dim_names, &
start=start_field, count=count_field)
endif
deallocate(ri_field)
#else
UNUSED_DUMMY(eval); UNUSED_DUMMY(has_phi); UNUSED_DUMMY(has_apar); UNUSED_DUMMY(has_bpar)
UNUSED_DUMMY(IDs); UNUSED_DUMMY(my_conv)
#endif
end subroutine add_eigenpair_to_file