3D attributes of g.region

Hi,

I would welcome an explanation of the 3D attributes returned by g.region.
Consider the following:

gs.run_command("g.region", b=0, t=100, tbres=20, rows=150, cols=135)
gs.run_command("g.region", flags="3p")

It returns:

projection: 99 (Lambert Conformal Conic)
zone:       0
datum:      nad83
ellipsoid:  a=6378137 es=0.006694380022900787
north:      220750
south:      220000
west:       638300
east:       639000
top:        100.00000000
bottom:     0.00000000
nsres:      5
nsres3:     1
ewres:      5.18518519
ewres3:     1
tbres:      20
rows:       150
rows3:      750
cols:       135
cols3:      700
depths:     5
cells:      20250
cells3:     2625000

What are rows3, cols3 and cells3?
rows3 seems to be rows * depths, but cols3 is not cols * depths.
Also, I would expect cells3 to be the number of 3D cells, but it is not. In the case above, the number of 3D cells should be depths*rows*cols, or 20*150*135=405000, but instead it is depths*rows3*cols3.
What is going on here? Is the 3D region size and resolution independent from the 2D region? If so, it is rather unexpected and should be better documented.

Yes, it is separate, rows3*cols3*depths = cells3.
I don’t know what was behind the design choices, I can see advantage to either way.

More documentation would be indeed useful, probably both in g.region and 3d intro.