17 public set_consistent_lowbc_descriptor
32 type(model_state_type),
target,
intent(inout) :: current_state
35 if (.not. current_state%passive_q)
then
36 iqv = get_q_index(standard_q_names%VAPOUR,
'lowerbc')
42 type(model_state_type),
target,
intent(inout) :: current_state
44 integer :: current_x_index, current_y_index
46 current_x_index=current_state%column_local_x
47 current_y_index=current_state%column_local_y
49 if (current_state%halo_column)
return
51 call set_flow_lowbc(current_state, current_x_index, current_y_index)
52 if (current_state%th%active)
then
53 call set_th_lowbc(current_state, current_x_index, current_y_index)
55 if (current_state%number_q_fields .gt. 0)
then
56 call set_q_lowbc(current_state, current_x_index, current_y_index)
61 type(model_state_type),
target,
intent(inout) :: current_state
62 integer,
intent(in) :: current_x_index, current_y_index
64 if (current_state%use_viscosity_and_diffusion .and. &
65 current_state%use_surface_boundary_conditions)
then
67 current_state%su%data(1, current_y_index, current_x_index)= &
68 -current_state%su%data(2, current_y_index, current_x_index)
71 current_state%sv%data(1, current_y_index, current_x_index)= &
72 -current_state%sv%data(2, current_y_index, current_x_index)
76 current_state%su%data(1, current_y_index, current_x_index)= &
77 current_state%su%data(2, current_y_index, current_x_index)
80 current_state%sv%data(1, current_y_index, current_x_index)= &
81 current_state%sv%data(2, current_y_index, current_x_index)
87 subroutine set_th_lowbc(current_state, current_x_index, current_y_index)
88 type(model_state_type),
target,
intent(inout) :: current_state
89 integer,
intent(in) :: current_x_index, current_y_index
91 if (current_state%use_surface_boundary_conditions)
then
92 if (current_state%type_of_surface_boundary_conditions == prescribed_surface_fluxes)
then
93 current_state%sth%data(1, current_y_index, current_x_index)= &
94 current_state%sth%data(2, current_y_index, current_x_index)
96 current_state%sth%data(1, current_y_index, current_x_index)= &
97 -current_state%sth%data(2, current_y_index, current_x_index)
103 subroutine set_q_lowbc(current_state, current_x_index, current_y_index)
104 type(model_state_type),
target,
intent(inout) :: current_state
105 integer,
intent(in) :: current_x_index, current_y_index
109 if (current_state%number_q_fields .gt. 0)
then
110 do n=1,current_state%number_q_fields
111 current_state%sq(n)%data(1, current_y_index, current_x_index)= &
112 current_state%sq(n)%data(2,current_y_index, current_x_index)
115 if (current_state%use_surface_boundary_conditions .and. &
116 current_state%type_of_surface_boundary_conditions == prescribed_surface_values)
then
117 current_state%sq(
iqv)%data(1, current_y_index, current_x_index)= &
118 -(current_state%sq(
iqv)%data(2,current_y_index, current_x_index))