6 SUBROUTINE bem_morpho(PBLD, PWALL_O_HOR, PBLD_HEIGHT, PFLOOR_HEIGHT, &
7 pgr, pn_floor, pwall_o_bld, pglaz_o_bld, pmass_o_bld, &
9 pf_floor_mass, pf_floor_wall, pf_floor_win, &
10 pf_floor_roof, pf_wall_floor, pf_wall_mass, &
11 pf_wall_win, pf_win_floor, pf_win_mass, pf_win_wall, &
12 pf_mass_floor, pf_mass_wall, pf_mass_win, pf_waste_can, &
53 REAL,
DIMENSION(:),
INTENT(IN) :: pbld
54 REAL,
DIMENSION(:),
INTENT(IN) :: pwall_o_hor
55 REAL,
DIMENSION(:),
INTENT(IN) :: pbld_height
56 REAL,
DIMENSION(:),
INTENT(INOUT)::pfloor_height
57 REAL,
DIMENSION(:),
INTENT(IN) :: pgr
58 REAL,
DIMENSION(:),
INTENT(OUT) :: pn_floor
59 REAL,
DIMENSION(:),
INTENT(OUT) :: pwall_o_bld
60 REAL,
DIMENSION(:),
INTENT(OUT) :: pglaz_o_bld
61 REAL,
DIMENSION(:),
INTENT(OUT) :: pmass_o_bld
62 REAL,
DIMENSION(:),
INTENT(OUT) :: pfloor_hw_ratio
63 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_floor_mass
64 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_floor_wall
65 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_floor_win
66 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_floor_roof
67 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_wall_floor
68 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_wall_mass
69 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_wall_win
70 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_win_floor
71 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_win_mass
72 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_win_wall
73 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_win_win
74 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_mass_floor
75 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_mass_wall
76 REAL,
DIMENSION(:),
INTENT(OUT) :: pf_mass_win
77 REAL,
DIMENSION(:),
INTENT(INOUT)::pf_waste_can
81 REAL,
DIMENSION(SIZE(PBLD)):: zf_aux2
92 IF (pfloor_height(jj) < 2.5)
THEN
94 pfloor_height(jj) = 2.5
96 IF (pfloor_height(jj) > pbld_height(jj))
THEN
99 pfloor_height(jj) = pbld_height(jj)
105 IF (pbld(jj) > 0.9999 .AND. pf_waste_can(jj) > 0.)
THEN
108 pf_waste_can(jj) = 0.
115 pn_floor(:) = float(nint(pbld_height(:) / pfloor_height(:) ))
116 pwall_o_bld(:) = pwall_o_hor(:) * (1. - pgr(:)) / pbld(:)
117 pglaz_o_bld(:) = pwall_o_hor(:) * pgr(:) / pbld(:)
119 WHERE(pn_floor > 1.5)
135 pmass_o_bld(:) = 2 * (pn_floor(:) - 1.)
136 pfloor_hw_ratio(:) = pwall_o_hor(:) / pn_floor(:) / pbld(:) / 2.
138 pf_floor_mass(:) = (pfloor_hw_ratio(:)**2 + 1.)**0.5 - pfloor_hw_ratio(:)
139 pf_floor_wall(:) = (1. - pf_floor_mass(:)) * (1. - pgr(:))
140 pf_floor_win(:) = (1. - pf_floor_mass(:)) * pgr(:)
141 pf_floor_roof(:) = 0.
143 zf_aux2(:) = (1. - pf_floor_mass(:)) / pfloor_hw_ratio(:)
145 pf_wall_floor(:) = zf_aux2(:) / ( 2.*pn_floor(:) )
146 pf_wall_mass(:) = pf_wall_floor(:) * (2.*pn_floor(:)-2.)
147 pf_wall_win(:) = (1. - zf_aux2(:)) * pgr(:)
149 pf_win_floor(:) = pf_wall_floor(:)
150 pf_win_mass(:) = pf_wall_mass(:)
151 pf_win_wall(:) = (1. - pf_win_floor(:) * 2. - pf_win_mass(:) ) * (1. - pgr(:))
152 pf_win_win(:) = (1. - pf_win_floor(:) * 2. - pf_win_mass(:) ) * pgr(:)
154 pf_mass_floor(:) = pf_floor_mass(:) / pmass_o_bld(:)
155 pf_mass_wall(:) = pwall_o_bld(:) * pf_wall_mass(:) / pmass_o_bld(:)
156 pf_mass_win(:) = pglaz_o_bld(:) * pf_win_mass(:) / pmass_o_bld(:)
168 pfloor_hw_ratio(:) = pwall_o_hor(:) / pbld(:) / 2.
170 pf_floor_roof(:) = (pfloor_hw_ratio(:)**2 + 1.)**0.5 - pfloor_hw_ratio(:)
171 pf_floor_mass(:) = 0.
172 pf_floor_wall(:) = (1. - pf_floor_roof(:)) * (1. - pgr(:))
173 pf_floor_win(:) = (1. - pf_floor_roof(:)) * pgr(:)
175 zf_aux2(:) = (1. - pf_floor_roof(:)) / pfloor_hw_ratio(:)
177 pf_wall_floor(:) = zf_aux2(:) / 2.
179 pf_wall_win(:) = (1. - zf_aux2(:)) * pgr(:)
181 pf_win_floor(:) = pf_wall_floor(:)
183 pf_win_wall(:) = (1. - pf_win_floor(:) * 2. - pf_win_mass(:) ) * (1. - pgr(:))
184 pf_win_win(:) = (1. - pf_win_floor(:) * 2. - pf_win_mass(:) ) * pgr(:)
186 pf_mass_floor(:) = 0.
subroutine bem_morpho(PBLD, PWALL_O_HOR, PBLD_HEIGHT, PFLOOR_HEIGHT, PGR, PN_FLOOR, PWALL_O_BLD, PGLAZ_O_BLD, PMASS_O_BLD, PFLOOR_HW_RATIO, PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, PF_FLOOR_ROOF, PF_WALL_FLOOR, PF_WALL_MASS, PF_WALL_WIN, PF_WIN_FLOOR, PF_WIN_MASS, PF_WIN_WALL, PF_MASS_FLOOR, PF_MASS_WALL, PF_MASS_WIN, PF_WASTE_CAN, PF_WIN_WIN)