Does rmtxop by default take values from block “Visible”, “Transmission Front”? What if my xml file contains more blocks and I want to get other blocks e.g. “Solar”, “Transmission Front” to be multiplied?
My xml files (mainly from Complex Glazing Database (CGDB)) doesn’t have RGB color. would it be fine to use this option -c .333 .333 .334 (equally) for rmtxop?
If both “Front Transmission” (going from outside to inside) and “Back Transmission” are available, rmtxop will prefer the “Front Transmission” matrix. Otherwise, the “Back Transmission” matrix will be used after reversing its direction using reciprocity. Only “Visible” data will be used in either case. If your data does not have color information, as in most cases, then the coeffeicients you use for the -c option do not matter, except that they should sum to 1.0.
So here is another question. If I take care of the final xml file data structure (for WINDOW) by myself, would it be possible to just use simple matrix product?
Tf BSDF1 X Tf BSDF2 = Tf Combined
Is there any need to duplicate the wrapBSDF -c option (Lambda) procedure?
You can use the matrix straight out of rmtxop in another matrix calculation, such as dctimestep or rmtxop. You don’t need to put it back into an XML file using wrapBSDF unless you intend to use it in a rendering process.
I am confused about how rmtxop multiplies the BSDF matrices.
I try to do the same thing with numpy but the results of matrix multiplication from rmtxop doesnt help me to understand the calculation method.
So, I made an Identity matrix (I.xml) and a all-ones matrix (1.xml) in “visble”, Transmission Front" block in the xml files. And I have tried to understand how lambda values are applied and what is the shape of this lambda matrix? (145X1) or (diagonal Lambda145X145)?
I used the commands bellow
*Radiance: rmtxop -fa -c .333 .333 .334 I.xml > diagonalLambda.out rmtxop -fa -c .333 .333 .334 I.xml -c .333 .333 .334 I.xml > IXI.out
*and in python it gives me the same resultant matrix (IXI). I = np.identity(145) IXLamb =np.matmul(diagonalLambda_145X145,I) IXI = np.matmul(IXLamb,IXLamb)
But I am not able to replicate the same results for unity matrix:
I am guessing that you are missing the fact that loading an XML file is not the same to rmtxop as loading a matrix file. In the case of a BTDF (XML) file, each matrix element gets multiplied by the corresponding solid angle for the incident patch to arrive at a flux coefficient.
A 100% diffusing Lambertian transmitter (which I believe is impossible BTW) would have BTDF values of 1/pi (0.3183 or so) for every entry. This would get converted to the receiving patch solid angle over pi when loaded in rmtxop.
A 100% specular transmitting surface (air) would have a diagonal matrix where each entry is equal to the reciprocal of the receiving patch solid angle. When loaded into rmtxop, these coefficients would then be multiplied by the patch solid angle to get the identity matrix.
If you give rmtxop a straight matrix rather than an XML file, then it is assumed that the coefficients correspond to flux transfer rather than BTDF values.
Happy to see you active here and there
So, for my case the transmittance was the main important component thus I simply used NumPy for multiplying the transmission matrices.
I would suggest using LBNL Window software if you are interested in different combinations of shading and glazings. I also suggest you take a look at the https://github.com/LBNL-ETA/pyWinCalc or this example.