allocate_fields Subroutine

public subroutine allocate_fields(mesh, fields)

Dynamically allocates all arrays within the flow fields container.

Sizing is determined by the number of cells and faces in the provided mesh. All fields are initialized to zero upon allocation.

Arguments

Type IntentOptional Attributes Name
type(mesh_t), intent(in) :: mesh

The mesh structure defining the domain size.

type(flow_fields_t), intent(inout) :: fields

The container to be allocated.


Calls

proc~~allocate_fields~~CallsGraph proc~allocate_fields mod_fields::allocate_fields proc~finalize_fields mod_fields::finalize_fields proc~allocate_fields->proc~finalize_fields

Called by

proc~~allocate_fields~~CalledByGraph proc~allocate_fields mod_fields::allocate_fields proc~initialize_fields mod_fields::initialize_fields proc~initialize_fields->proc~allocate_fields program~lowmach_react_hex lowmach_react_hex program~lowmach_react_hex->proc~initialize_fields

Source Code

   subroutine allocate_fields(mesh, fields)
      type(mesh_t), intent(in) :: mesh
      type(flow_fields_t), intent(inout) :: fields

      call finalize_fields(fields)

      allocate(fields%u(3, mesh%ncells))
      allocate(fields%u_old(3, mesh%ncells))
      allocate(fields%u_star(3, mesh%ncells))

      allocate(fields%p(mesh%ncells))
      allocate(fields%phi(mesh%ncells))
      allocate(fields%div(mesh%ncells))

      allocate(fields%face_flux(mesh%nfaces))
      allocate(fields%rhs_old(3, mesh%ncells))

      fields%u = zero
      fields%u_old = zero
      fields%u_star = zero

      fields%p = zero
      fields%phi = zero
      fields%div = zero

      fields%face_flux = zero
      fields%rhs_old = zero
      fields%rhs_old_valid = .false.
   end subroutine allocate_fields