1. Introduction
Membrane nanofiltration (NF) is a well-established technology used in various industries, including water treatment, pharmaceuticals, and food production. Over the past decade, there has been growing interest in the use of novel materials and fabrication techniques for NF membranes [
1]. In parallel with this trend, the need to evaluate the practical viability of innovative membranes has become increasingly critical in the early stages of development. While a wide range of microscopy, spectroscopy, and physical characterization techniques are routinely employed to assess chemical structure, membrane morphology, pore size, hydrophilicity, and zeta potential, the most essential characterization technique is practical filtration evaluation [
2]. Pressure-driven filtration evaluation can be performed in either a dead-end or a cross-flow setup. Dead-end setups are relatively simple, typically consisting of a pressure-regulated gas line connected to a reservoir that supplies a filter cell holding the membrane with feed solution at a constant pressure. The drawback of dead-end setups is that rejected species accumulate at the membrane surface during filtration, leading to severe concentration polarization and fouling, resulting in reduced permeance and apparent rejection rates. Therefore, a setup that circulates the solution at the membrane surface is needed for reliable evaluation. This is accomplished in either a stirred dead-end or a cross-flow setup. Stirred dead-end systems incorporate a stirred reservoir in the filter cell, while cross-flow setups employ a pump to continuously circulate the feed solution across the membrane surface. In stirred dead-end systems, the solute concentration increases over time as solvent permeates. Therefore, cross-flow setups are preferable for longer-duration experiments as they can run continuously under steady-state conditions. Conducting extended filtration experiments—lasting at least several hours—is essential for system equilibration and accurate assessment of long-term membrane performance under realistic conditions.
Commercial membrane evaluation systems are expensive, with stirred dead-end cells typically costing over 2000 € and cross-flow setups costing several times more. They are usually designed for membrane sizes of at least 15 cm2, which may be impractical for evaluating membranes in the early stages of development, when only limited material is available. Here, we present a filtration system design that can be constructed using accessible tools and low-cost materials. The system operates without a pump but is capable of running continuously at near-steady-state conditions similar to a conventional cross-flow setup. The system has been successfully tested at 7.6 bar operating pressure and is suitable for filtration of dilute aqueous solutions of dyes, acids, and inorganic salts. The filter cell is designed to accommodate membranes with a diameter of 30 mm, but it can be adapted to fit smaller membranes.
2. Design
2.1. Overview
Our system is constructed from low-cost, widely available components and parts that can be 3D printed on a simple desktop fused deposition modeling (FDM) 3D printer. Since 3D printing a conventional stirred dead-end cell with an integrated large-volume feed reservoir capable of withstanding high pressure is challenging, the system instead utilizes a separate feed reservoir and a compact filter cell. The cell is available in two variants: dead-end and stirred cross-flow. The stirred cross-flow cell employs a magnetic stirring bar to circulate the solution in the cell and a retentate outlet to gradually flush the cell with fresh feed solution. This design enables continuous operation at a near-constant solute concentration similar to a conventional cross-flow system, without requiring a pump. By contrast, the dead-end cell is simpler in construction and is suitable for pure-solvent permeation experiments. The cross-flow system includes a regulator valve to restrict the retentate flow. The system is assembled using 6 mm outer-diameter pneumatic tubing (rated to 10 bar) and push-to-connect fittings for rapid assembly and component replacement. The feed reservoir is pressurized by a regulated-pressure N2 source, which drives the feed solution into the filter cell.
2.2. Filament Selection
A polyethylene terephthalate glycol (PETG) filament was used for the 3D-printed parts because it is readily available, it can be printed on practically any desktop 3D printer—requiring extruder temperatures of only 220–240 °C—and a high print quality can be achieved without a heated enclosure. Furthermore, PETG offers relatively high toughness, is considered to offer high chemical resistance [
3], and is available as “food-safe” and free from additives—reducing the risk of contamination by compounds leaching from the plastic. The PETG parts that contain pressurized fluids were subjected to a heat-treatment post-processing step [
4,
5] to eliminate voids between print lines and ensure that fluid did not seep through the bulk of the parts. Although filaments such as polyethylene (PE), polypropylene (PP), and polyvinylidene fluoride (PVDF) offer greater chemical resistance and are compatible with standard desktop 3D printers, their low stiffness makes the design of a pressure-tight filter cell more challenging. An alternative filter cell design that is pressure-tight when printed in PP is described in
Appendix A.
2.3. Filter Cell
The filter cell is available in two variants: dead-end and stirred cross-flow (
Figure 1). It consists of a top and a bottom housing held together by a KF-25 ring clamp. The clamp is tightened with a single wingnut facilitating rapid replacement of the membrane. A ring in the top housing and a groove in the bottom housing align the two halves of the cell when assembled. The membrane is placed on a grid in the bottom housing, which collects permeate into an outlet channel. The dead-end cell features a fitting in the top housing for connecting the feed inlet tube, and a permeate outlet nozzle in the bottom housing. The cross-flow cell has an additional retentate-outlet tube connection in the top housing and uses a tube for its permeate outlet as the cell must sit on a magnetic stirring plate. A stirring bar retained by a stainless-steel wire is suspended from a beam that is press-fit into a socket at the top of the cell, allowing the bar to rotate freely without contacting the membrane.
2.4. Feed Reservoir
The feed reservoir is constructed from a plastic water-carbonation bottle and a custom-built cap (
Figure 2A). The cap comprises a plug with connections for a pressure inlet and a feed outlet tube, and a threaded ring that retains the plug. It fits a standard 1 L
SodaStream bottle. While these bottles lack an official pressure rating, they must withstand pressures of several bars in their intended use case and are designed with generous safety margins. The bottles are typically made from polyester or polyester copolymers and are therefore resistant to dilute acids and inorganic salt solutions [
6].
2.5. Regulator Valve
The regulator valve attaches to the retentate tube and uses an M4 bolt threaded into a 3D-printed part to create a narrow orifice, thereby restricting liquid flow (
Figure 2B). The flow rate can be adjusted by turning the bolt, which is equipped with a handle for manual adjustment.
2.6. Other Accessories
An outlet tube holder and a cuvette stand were designed for use with the filtration system. While not necessary for operation, they are helpful for collecting series of permeate fractions during filtration experiments. The outlet tube holder can be taped to a bench for stability and has a hole for securing the end of the outlet tube. The cuvette stand holds ten cuvettes and is placed at the permeate outlet. These parts were designed for ease of printing and can be printed without supports from polylactic acid (PLA) filament.
3. Build Instructions
Table 1 lists the materials required to construct the cross-flow setup.
Appendix B lists the required tools. The 3D model files are provided in the
Supporting Information. A comprehensive description of the model files is provided in
Appendix C.
3.1. Printing and Heat-Treating
The parts should be printed with 100% infill, and supports should be removed. The parts that will contain pressurized liquids (feed reservoir cap plug, filter cell top housing, and regulator valve) must then be heat-treated to eliminate voids between the print lines. To heat-treat the parts, they should be packed in a sodium chloride salt bed, heated at 180 °C for 40 min in a convection oven, cooled to room temperature, removed from the salt bed, and rinsed with water. Use a fine salt powder and thoroughly fill all voids around the parts. The fine salt powder can be prepared by pulverizing table salt in a kitchen blender. The temperature and heating time may need to be adjusted depending on the salt bed volume, filament brand, and other factors. The parts should retain their original dimensions after heating. If significant sink marks or surface pitting appear, this indicates that the printing process left substantial voids in the parts. This can be resolved by using well-dried filament and, if needed, raising the extrusion multiplier in the slicer. A “test piece” model that can be printed quickly and used to optimize print settings and heat-treatment parameters is available in the
Supporting Information. The test piece can be pressurized via a push-to-connect fitting and submerged in water to verify that the procedure successfully produces leak-proof parts. After heat-treatment, the grid surface in the filter cell bottom housing and the O-ring grooves in the top housing should be wet-polished with sandpaper to ensure proper sealing.
3.2. Fitting Installation
To install push-to-connect fittings in the printed parts, threads are first partially cut using a tap. Then, the fitting is screwed in to complete the thread shaping, removed, wrapped with polytetrafluoroethylene (PTFE) sealing tape, and reinstalled.
The O-ring and retaining ring of the feed reservoir cap must be installed around the plug before the fittings are inserted. A tube of appropriate length, sufficient to reach the bottom of the reservoir, is then inserted into the bottom fitting of the plug.
The bolt hole in the regulator valve is threaded using an M4 tap. Do not thread the full depth of the hole to allow for the complete closure of the valve by fully tightening the bolt.
To install the permeate outlet tube in the cross-flow cell, first thread the outlet hole with an M5 tap. The tube is fastened using a standard finger-tight, high-pressure liquid chromatography (HPLC) column connector screw. PTFE sealing tape can be applied around the cone-shaped end of the screw if necessary to ensure a tight seal.
3.3. Stirring Bar Installation
Images to complement the step-by-step instructions are provided in
Figure 3.
- 1.
A 0.8 mm-thick stainless-steel wire is wrapped around the center of the stirring bar and twisted to secure it firmly. The twisted part should be no longer than ∼3 mm. One end of the wire is trimmed, while the other is shaped into the shaft around which the bar will rotate. The shaft should be as straight as possible, perpendicular to the bar, and aligned with its center.
- 2.
The hole in the printed beam is drilled to match the shaft diameter. The shaft is then inserted through the beam. It should rotate with minimal resistance. A piece of 0.5 mm thick PTFE sheet, serving as a bushing, is then slid onto the shaft and trimmed to the diameter of the circular central part of the beam.
- 3.
A short piece of wire, serving as a shaft collar, is bent into a U-shape around the end of the shaft. A bench vise is used to press the collar firmly onto the shaft so that the stirring bar is retained ∼5 mm from the beam. The shaft is then cut right above the collar.
- 4.
The beam is press-fit into the socket in the top housing of the cell, suspending the stirring bar at a height sufficient to avoid contacting the membrane when the cell is closed. The ends of the stirring bar can be trimmed with a utility knife if they interfere with free rotation.
4. Operating Instructions
4.1. Precautionary Statement
Be aware that the filtration system operates using pressurized gas. Improper operation or component failure could result in serious injury. During testing, our system was pressurized at 7.6 bar for 24 h without failure or noticeable leakage. However, this does not guarantee that a system constructed following the provided instructions will be safe to operate at these pressures. The authors accept no responsibility for injuries sustained when operating the filtration system. To minimize the risk of accidents, observe the following precautions:
Keep the system behind a safety shield when pressurized.
Ensure that all components are sealed and connected securely before pressurizing the system.
When pressurizing, raise the pressure slowly while monitoring for leaks.
Ensure that the system is completely depressurized before disconnecting or opening any components.
Take care not to damage or weaken any components mechanically or by exposure to chemicals, extreme temperatures, or strong ultraviolet light.
Take appropriate precautions to avoid injury in case of an explosion or leakage of liquid or gas. If a hazardous feed solution is used, place the setup in a fume hood.
4.2. Membrane Installation
The filter cell is assembled as shown in
Figure 4B. The inner O-ring seals the top housing of the cell against the membrane, and the outer O-ring seals the gap between the housing pieces. A ring clamp is installed around the rim of the cell, and its wingnut tightened to clamp the halves together. A piece of filter paper should be placed beneath the membrane as support. When installing a fragile membrane, place a gasket between the inner O-ring and the membrane to protect it from tearing as the O-ring deforms under clamping. The gasket can be cut from a polymer sheet. We used a 0.5 mm thick PTFE sheet, but other of soft polymer sheets, such as PE or PP, can also be used. If a gasket is used in the cross-flow cell, ensure that inner diameter of the gasket is large enough for its inner edge to be pressed firmly against the membrane by the O-ring. Otherwise, there will be a region beneath the gasket where the feed solution infiltrates but is not circulated.
4.3. System Assembly
Connect the components as shown in
Figure 4A. If a cross-flow setup is used, connect the retentate outlet of the cell to the flow-regulator valve. The system is pressurized by closing the release valve and then opening the fill valve. Any air present in the feed tubing and filter cell must be evacuated so as not to interfere with the membrane’s operation. In the cross-flow system, this is carried out by pressurizing the system and maintaining a high retentate flow until all air has escaped through the retentate stream. In the dead-end system, close the release valve, then fill the feed tube and filter cell with feed solution using a pipette before connecting the cell.
5. Validation
A thin-film, composite polyamide, flat-sheet Veolia RL membrane was evaluated using our stirred cross-flow setup. A circular piece of membrane with a diameter of 29.5 mm was used. The diameter of the active membrane area was estimated to be equal to the inner diameter of the inner O-ring (23.5 mm). Standard evaluation parameters were followed as closely as possible [
7]. An aqueous 2000 mg L
−1 MgSO
4 solution was filtered at an operating pressure of 7.6 bar for 24 h. The operating temperature was 23 °C, close to the standard of 25 °C. Several feed reservoirs were connected in series to provide sufficient feed solution for the duration of the experiment. The permeate recovery rate is ideally maintained at 15%; however, because the flow through the regulator valve tends to decrease over time—requiring constant adjustment to maintain stable—it fluctuated between 5% and 55% during the experiment. During portions of the experiment, permeate fractions were collected at 6 min intervals while the retentate flow rate was continuously monitored and adjusted. However, the system was unsupervised for the majority of the experiment, with permeate and retentate collected in large containers during these periods. The conductivity of the permeate was measured using an eDAQ ET915 conductivity electrode, and the concentration was determined using a standard curve. The results are shown in
Figure 5. After 24 h, the rejection rate was 96.5% and the permeance was 7.5 L m
−2 h
−1 bar
−1. The permeance was within the expected range specified by the manufacturer for spiral-wound
RL-membranes (5.3–8.7 L m
−2 h
−1 bar
−1 depending on the model), but the rejection rate was lower than the 99.5% specified by the manufacturer. A 99.5% rejection rate is expected from standardized evaluation in a well-designed conventional cross-flow setup that efficiently introduces feed solution at one end of the cell and removes retentate at the opposite end. The lower rejection rate achieved by our setup is attributable to less efficient replenishment of the feed solution in the cell, which leads to increased concentration polarization—a higher effective solute concentration at the membrane surface. This is further exacerbated by periods of operation at the above-target permeate recovery rate. The setup was also evaluated using the same membrane and operating pressure, filtering a 10 mg L
−1 Congo red dye solution for 2 h. In this case, the rejection rate reached ∼100% by the end of the experiment.
6. Conclusions
We have developed a low-cost nanofiltration membrane evaluation system that can be assembled using accessible tools and materials. Designed for membranes with small dimensions, the system provides an affordable and practical solution for assessing membrane performance during the early stages of development. Validation experiments using a commercial NF membrane demonstrated rejection rates approaching those specified by the manufacturer, confirming the system’s viability. Minor deviations are attributed to fluctuations in the retentate flow rate and less efficient circulation of the feed solution than would be expected from a conventional cross-flow system. These limitations could be addressed by implementing a more reliable flow-control mechanism, consisting of either a high-precision needle valve or a back-pressure regulator in combination with a static flow restrictor. Circulation of the feed solution within the filter cell could be improved by using a plate stirrer with stronger magnets, capable of higher stirring rates; optimizing the cell design by increasing the distance between feed and retentate ports; or operating at a higher retentate flow rate.
While the system operated successfully at 7.6 bar for 24 h during validation, without leakage or component failure, the maximum safe operating pressure remains uncertain due to the use of non-rated components. Neither the feed reservoir, constructed from a repurposed carbonation bottle, nor the filter cell, fabricated from 3D-printed parts, has been thoroughly tested for durability or failure pressure. Therefore, the system should be kept behind a safety shield when pressurized. Raising the operating pressure significantly beyond the 7.6 bar applied during validation would require a major redesign of the system. The tubing and fittings (currently rated at 10 bar) would need to be replaced with stronger alternatives, as would the feed reservoir. Additionally, the filter cell would likely need stiffening by reinforcement with thicker material, necessitating a redesign of the clamping mechanism.
Adapting the system to be compatible with a wide range of organic solvents would significantly expand its applicability, as organic-solvent nanofiltration is an emerging area of membrane research [
8]. A dead-end filter cell printable in PP filament is described in
Appendix A, offering a more chemically resistant alternative. However, to ensure full system compatibility, practically every component would need to be replaced. Nitrile O-rings could be replaced with fluoroelastomer (e.g., Viton) alternatives, and the feed reservoir could either be replaced with a commercial pressure vessel or the current design adapted to use a stainless-steel bottle with sufficient strength and a cap plug printed from PP. Although several chemically resistant tubing and fitting options are available, finding an alternative that is low-cost, high-pressure-compatible, and easy to integrate with 3D-printed parts remains a challenge.
Overall, this system provides a flexible and accessible platform for membrane evaluation in laboratory environments with limited resources, while offering several paths for future improvement and adaptation.
Supplementary Materials
The following Supporting Information can be downloaded at
https://www.mdpi.com/article/10.3390/hardware3040014/s1. S1: Compressed archive (.zip), 3D models of printable parts. S2: Web link (.url), Link to CAD project. S3: Spreadsheet (.xlsx), Data recorded during validation.
Author Contributions
Conceptualization, K.E.; methodology, K.E.; validation, K.E.; investigation, K.E.; resources, K.E.; data curation, K.E.; writing—original draft preparation, K.E.; writing—review and editing, K.E., C.X., M.S.; visualization, K.E.; supervision, C.X.; and funding acquisition, M.S. All authors have read and agreed to the published version of the manuscript.
Funding
The authors acknowledge the financial support provided by the Knut and Alice Wallenberg Foundation.
Data Availability Statement
Dataset available on request from the authors.
Conflicts of Interest
The authors declare no conflicts of interest.
Appendix A. Polypropylene Filter Cell
We were unable to achieve reliable sealing with a polypropylene filter cell design employing two face-sealing O-rings. Due to the low stiffness of polypropylene filament, the cell deforms under pressure. If the inner O-ring diameter is too small, it is not sufficiently compressed to form an effective seal. By using a radially sealing outer O-ring, the diameter of the inner O-ring can be increased so that it is compressed enough by the clamp to seal effectively. This design (
Figure A1) was printed using Fiberology PP filament and was pressurized at 8 bar without leakage; however, it has not been validated through practical use. Owing to the excellent chemical resistance of polypropylene, the cell could be used for filtration of most organic solvents and in highly acidic or basic conditions. However, for this to be viable, the chemical resistance of all filtration-system components would need to be verified. Another advantage of using PP filament is that the printed parts are leak-proof without requiring an additional heat-treatment step.
Figure A1.
Cross section of filter cell design that can be printed in polypropylene.
Figure A1.
Cross section of filter cell design that can be printed in polypropylene.
Appendix B. Software and Tools Used
The 3D-printed components of the system were designed using the Onshape computer-aided design (CAD) software (version 1.202). They were printed on a Prusa i3 MK3S (Prusa Research, Prague, Czech Republic) printer with a standard 0.4 mm nozzle. PrusaSlicer (version 2.9.2) was used for slicing. For printing PETG parts at a standard 0.2 mm layer height, high-quality print settings were used, except infill was set to 100% and supports were applied where needed. A Flux Beambox (FLUX Inc., Taipei City, Taiwan) laser cutter and the Beam Studio software (version 1.9.5) were used to cut membrane coupons, although this can also be carried out by hand. The following tools were also used: thread taps in sizes M4, M5, and 1/8′′ BSPT (a 1/8′′ NPT tap was used instead due to the unavailability of a BSPT tap); 0.8 mm drill bit; bench vise; pliers; wire cutters; wrenches; sandpaper; and a utility knife.
Appendix C. Design Files
Appendix C.1. Onshape CAD Project
The filter cell model files provided in the
Supporting Information are designed to use a 23.5 × 3.5 mm inner O-ring and a 34.5 × 3.5 mm outer O-ring and to hold a 29.5 mm diameter membrane where the combined thickness of the membrane, support layer, and optional gasket is ∼0.1 mm. However, the design dimensions can be modified within the Onshape CAD document using a set of named variables. A link to the online document is provided in the
Supporting Information. The variables can be adjusted to accommodate different gasket and O-ring sizes and different membrane diameters and to account for dimensional variability in the ring clamp. The named variables include:
#Cell_OD and #Edge_height: The diameter and height of cell outer rim at target compression (assuming parts are rigid). Adjust to account for differences in ring clamp dimensions.
#Stack_height: The combined thickness of the gasket, membrane, and support. Adjust to account for different thicknesses.
#Centering_ring_clearance: The clearance between the alignment ring and groove. Adjust if required for a tight fit.
#IOR_ID, #IOR_thickness, and #IOR_compression: The inner diameter, thickness, and target compression ratio of the inner O-ring. The inner O-ring dimensions determine the diameter of the membrane that can be fitted.
#OOR_ID, #OOR_thickness, and #OOR_compression: The inner diameter, thickness, and target compression ratio of the outer O-ring. The compression ratio for the outer O-ring should be lower than for the inner O-ring. This is to ensure that the inner ring, which needs to contain high pressure, seals tightly even if the cell deforms slightly under clamping.
Appendix C.2. Model Files
The following “.stl” 3D model files are available in the
Supporting Information. The list specifies if they require supports or heat-treatment post-processing. The models should be printed using PETG filament with 100% infill unless otherwise specified. The filter cell parts should be printed with the sealing surfaces facing up.
Cap plug –Supports Required, Heating Required
The plug for the feed reservoir cap.
Cap ring –No Supports, No Heating
The threaded ring for the feed reservoir cap.
CF beam –No Supports, No Heating
The beam for suspending the stirring bar in the cross-flow cell.
CF bottom housing –Supports Required, No Heating
The bottom housing of the cross-flow cell.
CF top housing –Supports Required, Heating Required
The top housing of the cross-flow cell.
DE bottom housing –Supports Required, No Heating
The bottom housing of the dead-end cell.
DE top housing –Supports Required, Heating Required
The top housing of the dead-end cell.
Regulator handle –No Supports, No Heating
The handle for for the bolt in the regulator valve.
Regulator valve –No Supports, Heating Required
The housing for the regulator valve. A solid bridging layer has been added to the central channel to enable printing without supports. The bridging layer should be cut out when printed.
Testpiece –No Supports, Heating Required
A test piece that is quick to print and can be used to validate print settings and heat treatment procedures. It is a simple vessel with a connection for a push-to-connect fitting.
Outlet tube holder –PLA filament, No Supports, No Heating
The holder for the end of the outlet tube. Printed using PLA with 20% infill.
Cuvette stand –PLA filament, No Supports, No Heating
The cuvette stand for the collection of permeate fractions. Printed using PLA with 20% infill.
PP bottom housing –PP filament, Supports Required, No Heating
The bottom housing of the polypropylene filter cell.
PP top housing –PP filament, Supports Required, No Heating
The top housing of the polypropylene filter cell.
References
- Mallakpour, S.; Azadi, E. Novel methodologies and materials for facile fabrication of nanofiltration membranes. Emergent Mater. 2022, 5, 1263–1288. [Google Scholar] [CrossRef]
- Agboola, O.; Maree, J.; Mbaya, R. Characterization and performance of nanofiltration membranes. Environ. Chem. Lett. 2014, 12, 241–255. [Google Scholar] [CrossRef]
- Haque, M.M.M.; Dhrubo, S.R.; Pranto, A.F.Z.; Ahmed, A.; Arefin, M.M.; Arifuzzaman, M.; Islam, M.S. Impact of process parameters and material selection on the mechanical performance of FDM 3D-Printed components. Hybrid Adv. 2025, 10, 100502. [Google Scholar] [CrossRef]
- Youtube User “Free Spirit 1”. Remelting 3D Printed Thermoplastics (The Salt Method). 2020. Available online: https://www.youtube.com/watch?v=nRLJ4ylGTFc (accessed on 30 July 2025).
- Zapciu, A.; Amza, C.G.; Baciu, F.; Vasile, M.I. Heat treatment of 3D printed polyethylene terephthalate glycol in a supporting powder bed. IOP Conf. Ser. Mater. Sci. Eng. 2021, 1182, 012083. [Google Scholar] [CrossRef]
- Woishnis, W.; Ebnesajjad, S. Chemical Resistance of Thermoplastics; PDL Handbook Series; Elsevier: Waltham, MA, USA, 2012; pp. 2558–2660. [Google Scholar]
- Morgante, C.; Lopez, J.; Cortina, J.L.; Tamburini, A. New generation of commercial nanofiltration membranes for seawater/brine mining: Experimental evaluation and modelling of membrane selectivity for major and trace elements. Sep. Purif. Technol. 2024, 340, 126758. [Google Scholar] [CrossRef]
- Waheed, A.; Sajid, M.; Baig, U.; Jillani, S.M.S.; Younas, H.; Ahmad, H.; Aljundi, I.H. Role of covalent crosslinking and 2D nanomaterials in the fabrication of advanced organic solvent nanofiltration membranes: A review of fabrication strategies, recent advances, and challenges. Sep. Purif. Technol. 2025, 353, 128431. [Google Scholar] [CrossRef]
| Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2025 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).