Useful additional libraries¶
mean_sd.f90¶
Description
This module contains a small type that simply handles two arrays (mean and SD) This type is used for time-averaged outputs (and their standard deviations).
Quick access
- Types:
- Variables:
compute_1d_complex,compute_1d_real,compute_2d_1d_input,compute_2d_2d_input,finalize_1d,finalize_2d,finalize_sd_1d,finalize_sd_2d,initialize_1d,initialize_2d
Needed modules
mem_alloc: This little module is used to estimate the global memory allocation used in MagICprecision_mod: This module controls the precision used in MagICparallel_mod(rank()): This module contains the blocking informationconstants(osq4pi()): module containing constants and parameters used in the code.useful(cc2real()): This module contains several useful routines.communications(reduce_radial()): This module contains the different MPI communicators used in MagIC.
Types
- type mean_sd/mean_sd_type¶
- Type fields:
% mean (*) [real ,allocatable]
% nstart [integer ]
% nstop [integer ]
% sd (*) [real ,allocatable]
- type mean_sd/mean_sd_2d_type¶
- Type fields:
% l_sd [logical ]
% mean (*,*) [real ,allocatable]
% n_start_col [integer ]
% n_start_row [integer ]
% n_stop_col [integer ]
% n_stop_row [integer ]
% sd (*,*) [real ,allocatable]
Variables
- mean_sd/compute_1d_complex [private]¶
- mean_sd/compute_1d_real [private]¶
- mean_sd/compute_2d_1d_input [private]¶
- mean_sd/compute_2d_2d_input [private]¶
- mean_sd/finalize_1d [private]¶
- mean_sd/finalize_2d [private]¶
- mean_sd/finalize_sd_1d [private]¶
- mean_sd/finalize_sd_2d [private]¶
- mean_sd/initialize_1d [private]¶
- mean_sd/initialize_2d [private]¶
useful.f90¶
Description
This module contains several useful routines.
Quick access
- Variables:
- Routines:
abortrun(),cc22real(),cc2real(),factorise(),l_correct_step(),lagrange_interp(),logwrite(),polynomial_interpolation(),round_off()
Needed modules
iso_fortran_env(output_unit())precision_mod: This module controls the precision used in MagICparallel_mod: This module contains the blocking informationoutput_data(n_log_file(),log_file()): This module contains the parameters for output controllogic(l_save_out()): Module containing the logicals that control the runconstants(half(),one(),two()): module containing constants and parameters used in the code.
Variables
- useful/polynomial_interpolation_real [private]¶
Subroutines and functions
- function useful/l_correct_step(n, t, t_last, n_max, n_step, n_intervals, dt_output, times)¶
Suppose we have a (loop) maximum of n_max steps! If n_intervals times in these steps a certain action should be carried out this can be invoked by l_correct_step=true if on input n_intervals>0 and n_step=0. Alternatively the action can be invoked every n_step steps if on input n_intervals=0 and n_step>0. In both cases l_correct_step=true for n=n_max.
The argument controls whether in addition n should be even (n_eo=2) or odd (n_eo=1)
- Parameters:
n [integer ,in] :: current step
t [real ,in] :: time at current step
t_last [real ,in] :: last time at current step
n_max [integer ,in] :: max number of steps
n_step [integer ,in] ::
’
n_intervals [integer ,in] :: number of actions
dt_output [real ,in] :: In this case, increment the target time for next output
times (*) [real ,inout] :: times where l_correct_step == true
- Return:
l_correct_step [logical ]
- Called from:
- Call to:
- subroutine useful/factorise(n, n_facs, fac, n_factors, factor)¶
Purpose of this subroutine is factorize n into a number of given factors fac(i).
- Parameters:
n [integer ,in] :: remaining
n_facs [integer ,in] :: number of facs to be tried !
fac (*) [integer ,in] :: list of fators to be tried !
n_factors [integer ,out] :: number of factors
factor (*) [integer ,out]
- Called from:
- Call to:
- function useful/cc2real(c, m)¶
This function computes the norm of complex number, depending on the azimuthal wavenumber.
- Parameters:
c [complex ,in] :: A complex number
m [integer ,in] :: Azimuthal wavenumber
- Return:
cc2real [real ]
- Called from:
get_poltorrms(),hint2dpol(),hint2dpollm(),hintrms(),getdlm(),get_e_kin(),get_u_square(),get_e_mag(),get_power(),rbrspec(),rbpspec(),spectrum(),get_amplitude(),getstartfields(),get_mag_rhs_imp(),get_mag_rhs_imp_ghost(),get_pol_rhs_imp(),get_pol_rhs_imp_ghost(),assemble_pol(),assemble_single(),get_single_rhs_imp(),get_tor_rhs_imp(),get_tor_rhs_imp_ghost()
- function useful/cc22real(c1, c2, m)¶
- Parameters:
c1 [complex ,in]
c2 [complex ,in]
m [integer ,in]
- Return:
cc22real [real ]
- Called from:
- subroutine useful/logwrite(message)¶
This subroutine writes a message in the log.TAG file and in the STDOUT If l_save_out is set to .true. the log.TAG file is opened and closed.
- Parameters:
message [character(len=*),in] :: Message to be written
- Called from:
dt_courant(),outto(),output(),precalc(),radial(),spectrum(),getstartfields(),step_time()
- subroutine useful/polynomial_interpolation(xold, yold, xnew, ynew)¶
- Parameters:
xold (4) [real ,in]
yold (4) [complex ,in]
xnew [real ,in]
ynew [complex ,out]
- subroutine useful/abortrun(message)¶
This routine properly terminates a run
- Parameters:
message [character(len=*),in] :: Message printing before termination
- Called from:
readnamelists(),prepare_mat(),initialize_blocking(),init_fft(),getdlm(),inits(),initxi(),initb(),xi_cond(),pt_cond(),get_e_kin(),movie_gather_frames_to_rank0(),get_b_nl_bcs(),precalc(),writeinfo(),transportproperties(),readstartfields_old(),readstartfields(),readstartfields_mpi(),checktruncation(),prepareb_fd(),fill_ghosts_b(),assemble_mag(),assemble_mag_rloc(),assemble_pol_rloc(),assemble_single(),assemble_tor(),assemble_tor_rloc(),l_correct_step(),factorise()
- function useful/round_off(param, ref[, cut])¶
This function rounds off tiny numbers. This is only used for some outputs.
- Parameters:
param [real ,in] :: parameter to be checked
ref [real ,in] :: reference value
- Options:
cut [real ,in,] :: cutoff factor compared to machine epsilon
- Return:
round_off [real ]
- Called from:
outhemi(),outheat(),outphase(),outpar(),outperppar(),get_power(),spectrum()
- function useful/lagrange_interp(xp, x, yp)¶
This function performs a Lagrange interpolation around the point
- Parameters:
x [real ,in] :: Point where the quantity is interpolated
xp (*) [real ,in] :: Grid points where the quantity is known
yp (*) [real ,in] :: value
- Return:
lagrange_interp [real ]
- Called from:
mem_alloc.f90¶
Description
This little module is used to estimate the global memory allocation used in MagIC
Quick access
- Variables:
human_readable_size,memory_file,n_memory_file,n_ranks_print,ranks_selected- Routines:
finalize_memory_counter(),initialize_memory_counter(),memwrite()
Needed modules
parallel_mod: This module contains the blocking informationprecision_mod(lip(),cp()): This module controls the precision used in MagIC
Variables
- mem_alloc/bytes_allocated [integer,public]¶
- mem_alloc/human_readable_size [private]¶
- mem_alloc/memory_file [character(len=72),private]¶
- mem_alloc/n_memory_file [integer,private]¶
- mem_alloc/n_ranks_print [integer,private]¶
- mem_alloc/ranks_selected (*) [integer,private/allocatable]¶
Subroutines and functions
- subroutine mem_alloc/initialize_memory_counter(tag)¶
- Parameters:
tag [character(len=*),in]
- Called from:
- subroutine mem_alloc/memwrite(origin, bytes_alloc)¶
- Parameters:
origin [character(len=*),in]
bytes_alloc [integer ,in]
- Called from:
initialize_lmloop(),initialize_blocking(),initialize_communications(),initialize_radialloop(),magic
char_manip.f90¶
Description
This module contains several useful routines to manipule character strings
Quick access
- Routines:
capitalize(),dble2str(),delete_string(),write_long_string()
Needed modules
precision_mod: This module controls the precision used in MagIC
Subroutines and functions
- subroutine charmanip/capitalize(string_bn)¶
Convert lower-case letters into capital letters
- Parameters:
string_bn [character(len=*),inout]
- Called from:
- subroutine charmanip/delete_string(string_bn, string_del, length)¶
Deletes string_del from string and returns new length of string.
- Parameters:
string_bn [character(len=*),inout]
string_del [character(len=*),in]
length [integer ,out]
- subroutine charmanip/dble2str(num, str)¶
converts a 1 number num into a character str
- Parameters:
num [real ,in]
str [character(len=*),out]
- Called from:
- subroutine charmanip/write_long_string(prefix, long_string, out_unit)¶
This subroutine is used to split a long string (with len(str)>85) into a multi-lines string for a cleaner printout.
- Parameters:
prefix [character(len=*),in]
long_string [character(len=*),in]
out_unit [integer ,in]
- Called from: