How to refine hex elements

Dear cummunity,
I have a mesh made with bricks and cylinders. I want to keep my elements to be hex and also do a refinement based on the surfaces of my cylinder. This is my journal file (Thanks to the support of @karl and @gvernon in this issue I have been able to make this journal file):

reset
brick x 300 y 200 z 10
brick x 300 y 200 z 20
brick x 300 y 200 z 10
move Volume 1 z -5 include_merged  
move Volume 2 z -20 include_merged 
move Volume 3 z -35 include_merged 
cylinder rad 1 height 40
move Volume 4  x -150 y -100 z -20 include_merged 
cylinder rad 1 height 40
move Volume 5  x 150 y -100 z -20 include_merged
subtract volume 4 5 from volume 1 2 3
imprint all
merge all
block 1 add volume 1
block 1 name "cap"
block 2 add volume 2
block 2 name "res"
block 3 add volume 3
block 3 name "basement"
sideset 5 add surface 35
sideset 5 name "hot_area"
sideset 6 add surface 32
sideset 6 name "cold_area"
sideset 7 add surface 30 37 44
sideset 7 name "left_side"
sideset 8 add surface 31 38 45
sideset 8 name "right_side"
sideset 9 add surface 27 34 41
sideset 9 name "front_side"
sideset 10 add surface 11 5 17
sideset 10 name "back_side"
sideset 11 add surface 29
sideset 11 name "top_side"
sideset 12 add surface 40
sideset 12 name "bottom_side"
surface 35 32 28 42 25 39 size 2
volume all scheme tetmesh
mesh vol all
draw tet all

Now, is there any way to keep the elements as hex and refine for example volume 2 and surfaces 35 32 28 42 25 39? In the following a simplistic mesh (for another case) has almost the same refinement I need:

In my model I have two cylinders in two corners of the bricks whick are inoprtant parts and need to be considered in the refinement step.
Thanks again for your support.