Start with template circles for the inner, outer, and roof curves. Here the walls are 8 sides per corner (32-side cylinders) and the roof is 8 sides (16-side cylinder). This is different than what you have, but using displacements means we are restricted to multiples of four.
______________________________
Next we need corner templates at the radius of each joint in the arch. These (and the others) are best made individually rather than cloned and resized because the brush-generation algorithm will place all the vertexes on the grid but resizing won't always do so. Zoom in as far as you need to precisely measure the distances.
______________________________
Next make a displacement where the base of the arch should be, facing up. The end result will be inverted to make a roof, but displacement faces only show in 2D if they are facing the viewport and we will be working in top-down. This is a power 3 displacement (8x8) to go with our 8 sided corner/arch.
It isn't strictly necessary to make the brush angled with the corners at the corners of the curve, but it will result in less vertex movement being needed in the next step.
______________________________
Now begins the tedious part, using the Paint Geometry set to 1 unit and spatial turn off, move each displacement vertex to match up with the corresponding vertex on the template circles. You need to start at the outer edge so you are spreading the vertexes away from each other, instead of overlapping.
Grouping the templates can help with keeping the lines less confusing, since grouping gives brushes red/yellow line colors.
______________________________
Next switch to the Z axis and set PaintGeo to the height of your arch and go down the middle row lowering it. After that you need to measure the height(depth) of each vertex along the arch and move the two corresponding rows on the displacement.
______________________________
It would be possible to save some time (do half, mirror and rotate) and get slightly less distorted texturing by using more than one displacement brush along the "length" of the curve so the verts near the center aren't moving as far. However depending on the size and placement, this may end up with displacement verts at fractional grid units. This won't cause an error, but it means lining them up with the templates will be harder, though anyone is unlikely to notice the displacement being fractions of a unit off from "perfect". Because my brush had 45 degree angle and the grid was on 8 all verts landed on-grid (8x8 displacement divides into multiple of 8 grid size).
>> VMF <<