~reducedmodelling/fluidity/ROM_Non-intrusive-ann

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "confdefs.h"

module zoltan_global_variables

#ifdef HAVE_ZOLTAN

  ! Needed for zoltan_cb_owned_node_count
  use halos, only: halo_type

  ! Needed for zoltan_cb_get_owned_nodes
  use sparse_tools, only: csr_sparsity

  ! Needed for zoltan_cb_get_edge_list
  use fields, only: scalar_field, vector_field, mesh_type

  ! Needed for zoltan_cb_pack_node_sizes
  use zoltan, only: zoltan_int, zoltan_float
  use data_structures, only: integer_set, integer_hash_table

  ! Needed for zoltan_cb_pack_field_size
  use state_module, only: state_type
  use detector_data_types, only: detector_linked_list

  use global_parameters, only: OPTION_PATH_LEN

  implicit none

  public

  ! Needed for zoltan_cb_owned_node_count
  type(halo_type), save, pointer :: zoltan_global_zz_halo

  ! Needed for zoltan_cb_get_owned_nodes
  type(csr_sparsity), save :: zoltan_global_columns_sparsity
  logical, save :: zoltan_global_migrate_extruded_mesh

  ! Needed for zoltan_cb_get_num_edges
  type(csr_sparsity), save, pointer :: zoltan_global_zz_sparsity_one


  ! Needed for zoltan_cb_get_edge_list
  logical, save :: zoltan_global_calculate_edge_weights
  ! elements with quality greater than this value are ok
  ! those with element quality below it need to be adapted
  real, save :: zoltan_global_quality_tolerance
  type(scalar_field), save :: zoltan_global_element_quality
  type(scalar_field), save, pointer :: zoltan_global_max_edge_weight_on_node
  logical, save :: zoltan_global_output_edge_weights = .false.
  type(csr_sparsity), save, pointer :: zoltan_global_zz_nelist
  ! used for calculating local minimum element_quality during the edge-weight calculation
  real, save :: zoltan_global_local_min_quality
  logical, save :: zoltan_global_calculated_local_min_quality


  ! Needed for zoltan_cb_pack_node_sizes
  ! - added vector_field to use fields
  type(vector_field), save :: zoltan_global_zz_positions
  integer, parameter :: integer_size = bit_size(0_zoltan_int)/8
  logical, save :: zoltan_global_preserve_columns=.false.
  logical, save :: zoltan_global_preserve_mesh_regions
  type(csr_sparsity), save, pointer :: zoltan_global_zz_sparsity_two
  type(integer_set), save, dimension(:), allocatable :: zoltan_global_old_snelist


  ! Needed for zoltan_cb_pack_nodes
  type(integer_hash_table), save :: zoltan_global_universal_element_number_to_region_id
  type(integer_hash_table), save :: zoltan_global_universal_surface_number_to_element_owner
  type(integer_hash_table), save :: zoltan_global_universal_surface_number_to_surface_id
  integer, dimension(:), allocatable, save :: zoltan_global_universal_columns
  type(halo_type), save, pointer :: zoltan_global_zz_ele_halo 


  ! Needed for zoltan_cb_unpack_nodes
  type(vector_field), save :: zoltan_global_new_positions
  integer, save :: zoltan_global_new_positions_mesh_nhalos
  type(mesh_type), save :: zoltan_global_zz_mesh
  type(integer_hash_table), save :: zoltan_global_nodes_we_are_sending ! in old local numbers
  type(integer_set), save :: zoltan_global_nodes_we_are_keeping ! in old local numbers
  type(integer_hash_table), save :: zoltan_global_universal_to_new_local_numbering
  type(integer_hash_table), save :: zoltan_global_universal_to_old_local_numbering
  type(integer_set), save :: zoltan_global_new_nodes
  type(integer_hash_table), save :: zoltan_global_universal_to_new_local_numbering_m1d
  type(integer_set), save, dimension(:), allocatable :: zoltan_global_new_snelist
  type(integer_set), save :: zoltan_global_new_surface_elements
  type(integer_set), save, dimension(:), allocatable :: zoltan_global_new_nelist
  type(integer_set), save :: zoltan_global_new_elements
  integer(zoltan_int), save, dimension(:), pointer :: zoltan_global_my_import_procs => null()
  integer(zoltan_int), save, dimension(:), pointer :: zoltan_global_my_import_global_ids => null()
  integer(zoltan_int), save :: zoltan_global_my_num_import
  type(integer_set), save, dimension(:), allocatable :: zoltan_global_receives


  ! Needed for prepare_detectors_for_packing
  type(integer_hash_table), save :: zoltan_global_uen_to_new_local_numbering
  type(integer_hash_table), save :: zoltan_global_uen_to_old_local_numbering
  type(integer_hash_table), save :: zoltan_global_old_local_numbering_to_uen


  ! Needed for zoltan_cb_pack_field_sizes
  type(state_type), save, dimension(:), allocatable :: zoltan_global_source_states, zoltan_global_target_states
  integer, save, dimension(:), allocatable :: zoltan_global_ndets_in_ele  
  integer, save :: zoltan_global_ndata_per_det
  type(detector_linked_list), dimension(:), allocatable, target, save :: zoltan_global_to_pack_detectors_list

  ! Needed for zoltan_cb_pack_fields
  integer, save :: zoltan_global_ndims

  ! Needed for zoltan_cb_unpack_fields
  type(detector_linked_list), target, save :: zoltan_global_unpacked_detectors_list

  ! Option path set based on whether being called from adaptivity or flredecomp
  character(len = OPTION_PATH_LEN), save :: zoltan_global_base_option_path

#endif

end module zoltan_global_variables