ABSTRACT (original article): Mashrabiya are oriel windows characteristic of Islamic architectural tradition that were historically integrated into buildings located in places with arid climates. The present paper formulates a novel design approach to Mashrabiya systems, by employing origami modules equipped with photovoltaic cells. The examined oriel window is able to complement the main traditional functions of a Mashrabiya with solar energy harvesting. A primary folding motion of the origami modules designed to tessellate its surface permits the sunlight to pass through the system in a controlled way. A secondary tilting folding motion of the photovoltaic cells placed on these modules lets the system harvest solar energy and produce electric power. The paper illustrates the architectural and mechanical design of the examined Mashrabiya window, as well as its energy harvesting properties, using both numerical and experimental methods. CITATION (original article): Fraternali, F., Babilio, E., Nazifi Charandabi, R., Germano, G., Luciano, R., Spagnuolo,G., Dynamic origami solar eyes with tensegrity architecture for energy harvesting Mashrabiyas, Applications in Engineering Science 19, 2024, 100190. https://doi.org/10.1016/j.apples.2024.100190
Introduction and preliminaries
Introduction and preliminaries
The possibility to use a foldable structure as a sun energy harvester is explored in [1], to which this Notebook is related. The study is a follow up of the analysis reported in [2]. The geometry of the system is inspired by Mashrabiya, a ‘vernacular’ element of the architectural heritage of Islamic.
Simulation data
Simulation data
In[]:=
sides=4;(*numberofsidesofthesystem*)onesampleverymin=10;(*takesasampleevery'onesampleverymin'minutes*)(*geographicaldataandreferenceday*)lat=36.796639976;(*latitudeoftheplace*)lon=10.171966553;(*longitudeoftheplace*)year=2023;month=3;day=21;(*theanglestoorientthesystem*)zrotationangle=0;xrotationangle=-;yrotationangle=;θmax=94;(*maximumfacerotaionangle*)(*dataforgraphicalrepresentationofthesystem*)sidelength=1;skyradius=3;imagesize=600;
π
30
π
6
π
180
Reference systems
Reference systems
Let us consider a square representing the foldable system under investigation in its perfectly flat (unfolded) configuration. The centroid G of the square is the origin of two Cartesian systems of reference axes, one related to the cardinal points in the place where the system is located, the other local to the square itself. In the global frame, the axes x and y are oriented towards South and East, respectively, and z is orthogonal to the ground. The axes x’ and y’ of the local frame are set along the diagonals of the square and z’ is orthogonal to the square. The angles between the two systems are given by parameters “xrotationangle”, “yrotationangle” and “zrotationangle” (see ‘Simulation data’). Therefore, the two systems coincide if these parameters are set to 0.
Let us define three unit vectors “evec[i]”, with i={1,2,3} mutually orthogonal as
Let us define three unit vectors “evec[i]”, with i={1,2,3} mutually orthogonal as
In[]:=
evec[i_]:=IdentityMatrix[3]〚i〛;
and the rotation tensor as
In[]:=
rot[α_][i_,j_,k_]:=Cos[α](KroneckerProduct[evec[j],evec[j]]+KroneckerProduct[evec[k],evec[k]])+Sin[α](KroneckerProduct[evec[k],evec[j]]-KroneckerProduct[evec[j],evec[k]])+KroneckerProduct[evec[i],evec[i]];
leading to the matrices of rotations around x, y and z be expressed by
In[]:=
Rotx[α_]:=rot[α][1,2,3];Roty[α_]:=rot[α][2,1,3];Rotz[α_]:=rot[α][3,1,2];
For convenience, the sky, cardinal points and sun coordinates are rotated through “backrot” to be put in the same frame as the system.
In[]:=
backrot=Roty[yrotationangle].Rotx[xrotationangle];
To plot the ground plane with cardinal points and the sky vault we set the following
In[]:=
rotsky=skyradiusbackrot.{Cos[u]Sin[v],Sin[u]Sin[v],Cos[v]};skybase=Show[ParametricPlot3D[rotsky,{u,-π,0},{v,-π/2,π/2},MeshNone,PlotStyle{Opacity[0.1],Blue},PlotPoints80],Graphics3D[{Text[Style["E",Large],backrot.{0,1.15skyradiussidelength,0}],Text[Style["S",Large],backrot.{1.15skyradiussidelength,0,0}],Text[Style["W",Large],backrot.{0,-1.15skyradiussidelength,0}],Text[Style["N",Large],backrot.{-1.15skyradiussidelength,0,0}],{Black,Dashed,Line[skyradiusTable[backrot.{sidelengthCos[u],sidelengthSin[u],0},{u,0,2π,π/30}]]},{Dashed,Line[{backrot.{-skyradiussidelength,0,0},backrot.{skyradiussidelength,0,0}}],Line[{backrot.{0,-skyradiussidelength,0},backrot.{0,skyradiussidelength,0}}]}}]];
and here the two reference systems under the sky vault are shown
Show[Graphics3D[{Opacity[0.5],Blue,Polygon[{Rotz[zrotationangle].{sidelength,0,0},Rotz[zrotationangle].{0,sidelength,0},Rotz[zrotationangle].{-sidelength,0,0},Rotz[zrotationangle].{0,-sidelength,0}}]}],Graphics3D[{Text[Style["x",Large],0.9skyradiusbackrot.evec[1]],Text[Style["y",Large],0.9skyradiusbackrot.evec[2]],Text[Style["z",Large],0.9skyradiusbackrot.evec[3]],{Red,Arrow[ResourceFunction["DashedTube"][{{0,0,0},0.8skyradiusbackrot.evec[1]},0.03sidelength,{0.2sidelength,0.1sidelength}]]},{Green,Arrow[ResourceFunction["DashedTube"][{{0,0,0},0.8skyradiusbackrot.evec[2]},0.03sidelength,{0.2sidelength,0.1sidelength}]]},{Blue,Arrow[ResourceFunction["DashedTube"][{{0,0,0},0.8skyradiusbackrot.evec[3]},0.03sidelength,{0.2sidelength,0.1sidelength}]]}}],Graphics3D[{Text[Style["x'",Large],0.9skyradiusRotz[zrotationangle].evec[1]],Text[Style["y'",Large],0.9skyradiusRotz[zrotationangle].evec[2]],Text[Style["z'",Large],0.9skyradiusRotz[zrotationangle].evec[3]],{Red,Arrow[Tube[{{0,0,0},0.8skyradiusRotz[zrotationangle].evec[1]}]]},{Green,Arrow[Tube[{{0,0,0},0.8skyradiusRotz[zrotationangle].evec[2]}]]},{Blue,Arrow[Tube[{{0,0,0},0.8skyradiusRotz[zrotationangle].evec[3]}]]}}],skybase,AxesFalse,BoxedFalse,ImageSizeimagesize,ViewPointbackrot.{15,15,10},ViewVerticalbackrot.{0,0,1},Lighting->Automatic]
Out[]=
Geometry and Kinematics of the foldable system
Geometry and Kinematics of the foldable system
The angle between to sides of the system in its unfolded configuration
In[]:=
angle=;
2π
sides
The placements of the nodes of a single facet
The placements of (named) nodes after a rotation of “α$” around z
The rotation axis of a facet in the current configuration and the corresponding unit vector are defined as
Here the Rodrigues’ rotation formula [3] is defined to write the vector “vrot[vv,kk,θ]”. The latter is obtained by rotating the vector “vv” of an angle “θ” around the axis with “kk” as its unit vector
The centroid of the facet in current configuration
To build the system we start considering to contiguous facets, say ‘facetA’ and ‘facetB’. The unit normal to facetA (in the current configuration) is defined as
and the unit normal to facetB (in the current configuration) as
To plot the two contiguous facets and their unit normal vectors we define write follows
To plot the whole structure in its current configuration
Sun path data
Sun path data
To take sampling times, from sunrise to sunset
Here the sun position coordinates at sample times are taken in the “horizontal coordinate system”, where azimuth (ψs) and altitude (φs) angles (standing the index “s” for sun) are
To switch from the horizontal coordinate system to the global Cartesian system we write
Then, the sun coordinates and sun ray unit vector in local Cartesian coordinate system are given by
For convenience, all data are collected in a list of “nsamples” entries
Optimization of the angle between the normal to facets and sun ray direction
Optimization of the angle between the normal to facets and sun ray direction
The harvested energy is at its maximum if the normal vector to a facet is directed towards sun, that is the angle in between should be 0, leading to the cosine to be 1.
For the whole system, the maximum value of input power “funPin[τpar]” at time “τpar” should be equal to “2 sides” times the value of DNI, the direct normal irradiance. For the sake of this Notebook, DNI is assumed equal to 1 at any time (while in [1], the more realistic variation of DNI over time in the reference day is obtained by using PVLib v0 .10.3, a Python toolbox designed to simulate the performance of photovoltaic systems [4]). We may write
Due to the peculiar kinematics of the system under consideration, the normal vectors to facets and sun ray cannot be collinear anytime for any facet. Therefore, to maximize the harvested energy, a maximization problem must be solved.
Here the elevation and slope of the facets are optimized every “onesampleverymin” minutes (see ‘Simulation data’), by nesting NMaximize into a For cycle, which allows to see the state of the process, which will end as the counter, shown by using Print, reaches 0. Since each Print statement by default produces a new output cell, to direct the output of consecutive Print statements to the same output, the solution suggested by Rolf Mertig [5] is used. Notice that at any step the guess is got as the (perturbed) result of the previous step.
72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Results
Results
The variation of “funPin[τpar]” over time is shown here.
The variation of the elevation parameter over time is shown here.
The variation of the eight slope parameters over time is shown here.
The current configurations of the system during the day
The current configurations of the system during the day
To show the configurations of the system, including rest positions right before sunrise and after sunset, we write what follows
This gives the timer to be shown in graphics
These are for displaying and exporting the animation
The exported file is an AVI with “wh” as both frame width and height and “fr” frames per second. Notice that it takes a while to be exported.
Conclusions
Conclusions
This Mathematica notebook reports part of the code used in the study of a tensegrity structure designed to be employed as a solar energy harvester. The shape of the structure is inspired by Mashrabiya, a ‘vernacular’ element of the architectural heritage of Islamic countries. For the sake of this notebook, the input power is computed for unitary DNI. Two companions of this Notebook are already available [6,7] .
References
References
[1] F. Fraternali, E. Babilio, R. Nazifi Charandabi, G. Germano, R. Luciano, G. Spagnuolo, “Dynamic origami solar eyes with tensegrity architecture for energy harvesting Mashrabiyas”, Applications in Engineering Science, 19, 2024,100190. https://doi.org/10.1016/j.apples.2024.100190
[2] F. Fraternali, J. de Castro Motta, G. Germano, E. Babilio, A. Amendola, “Mechanical response of tensegrity-origami solar modules”, Applications in Engineering Science 2024, 17, 100174, https://doi.org/10.1016/j.apples.2023.100174
[3] J. S. Dai, “Euler–Rodrigues formula variations, quaternion conjugation and intrinsic connections”. Mechanism and Machine Theory 2015, 92, 144–152. https://doi.org/10.1016/j.mechmachtheory.2015.03.004
[4] W. Holmgren, K. Anderson, C. Hansen, Robwandrews, M. Mikofski, A.R. Jensen, A. Lorenzo, U. Krien, Bmu, A. Driesse, C. Stark, DaCoEx, M.S. de León Peque, T. Transue, E. Luis, Kt, N. Priyadarshi, Mayudong, Heliolytics, E. Miller, M.A. Anoma, V. Guo, L. Boeman, J. Stein, S. Jane, W. Vining, Jforbess, T. Lunel, C. Leroy, A. Morgan, “pvlib/pvlib-python: v0 .10.3”, 2023, Zenodo. http://dx.doi.org/10.5281/zenodo.10412885
[5] Rolf Mertig, Answer posted on Aug 20, 2013 at 17:19, https : // mathematica . stackexchange . com/questions/30793/consecutive - print - to - target - same - output - cell, Accessed on June 21, 2025
[6] F. Fraternali, J. de Castro Motta, G. Germano, E. Babilio, A. Amendola, “Origami solar modules with tensegrity architecture for solar façades of energy-efficient buildings”, Wolfram Community, STAFF PICKS, January 26, 2024, https://community.wolfram.com/groups/-/m/t/3110653
[7] R. Nazifi Charandabi, E. Babilio, G. Carpentieri, G. Spagnuolo, A. Amendola, F. Fraternali, “A tensegrity structure for a solar stadium roof with sun-tracking capability”, Wolfram Community, STAFF PICKS, February 19, 2025, https://community.wolfram.com/groups/-/m/t/3396614
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
Dynamic origami solar eyes with tensegrity architecture for energy harvesting Mashrabiyas
by Fernando Fraternali, Enrico Babilio, Rana Nazifi Charandabi, Giovanni Germano, Raimondo Luciano & Giovanni Spagnuolo
Wolfram Community, STAFF PICKS, July 2, 2025
https://community.wolfram.com/groups/-/m/t/3490156
by Fernando Fraternali, Enrico Babilio, Rana Nazifi Charandabi, Giovanni Germano, Raimondo Luciano & Giovanni Spagnuolo
Wolfram Community, STAFF PICKS, July 2, 2025
https://community.wolfram.com/groups/-/m/t/3490156