# E-Learning Proposal for 3D Modeling and Numerical Simulation with FreeFem++ for the Study of the Discontinuous Dynamics of Biological and Anaerobic Digesters

^{1}

^{2}

^{*}

^{†}

## Abstract

**:**

## 1. Introduction

## 2. Materials and Methods

#### 2.1. Governing Equations

#### 2.1.1. Stokes Equations

#### 2.1.2. Advection–Diffusion Equation (ADE)

#### 2.1.3. Diffusion Reaction Equation (DRE)

#### 2.2. Boundary and Initial Conditions

^{−3}) in the entire domain.

#### 2.3. Implementation of ADM1

#### 2.4. Numerical Method, Finite Element

- 1.
- Discretization of the domain into unstructured meshes.
- 2.
- The differential equation is first multiplied by a weight function w(x) and then integrated over the domain.
- 3.
- Choose the order of interpolation (e.g., linear, quadratic, etc.) and corresponding shape functions ${N}_{i}=1\dots m$, with trial function;$$p=\tilde{p}\left(x\right)=\sum _{i=1}^{m}{N}_{i}\left(x\right){p}_{i}.$$
- 4.
- Evaluate all integrals over each element in order to set up a system of equations in the unknown ${p}_{i}^{\prime}s$.
- 5.
- Solve the system of equations for the ${p}_{i}^{\prime}s$.

#### Tools

#### 2.5. Case Study

^{−1}) and a retention time of 1 day have been considered.

#### FreeFem++ Code

- 1.
- Definitions of parameters, boundaries and finite element spaces.
- 2.
- Description of macros and functions.
- 3.
- Problem definition.
- 4.
- Loading the loop and calculation of different processes.
- 5.
- Saving the results for manipulation in the post-processes

## 3. Results and Discussion

^{−1}s

^{−1}), as opposed to the extremes, in the upper zone with values close to zero. Since we are in the presence of a viscous fluid, the frictional forces between the fluid and the reactor walls force the velocities to be zero at these points—hence the tendency of the upward flow toward the central axis (Figure 3).

^{−2}COD), the exponential growth of biomass requires some time before substrate removal can be clearly perceived.

## 4. Conclusions

## Author Contributions

## Funding

## Data Availability Statement

## Conflicts of Interest

## Nomenclature

$\alpha $ | Stoichiometric parameters |

$\Delta $ | $\frac{{\partial}^{2}}{\partial {x}_{i}}$; ${x}_{i}=x,y,z$ |

$\mu \phantom{\rule{5.69054pt}{0ex}}$(d^{−1}) | Specific growth rate |

${\mu}_{ma{x}_{i}}\phantom{\rule{5.69054pt}{0ex}}$(d^{−1}) | Maximum specific growth rate |

∇ | $\frac{\partial}{\partial {x}_{i}}$; ${x}_{i}=x,y,z$ |

$\nu $ | viscosity of the fluid |

$\varphi $ | represent both the concentration of substrates and cells (kg·m^{−3}) |

f | source function. Reactive term |

${K}_{{S}_{1}}$ (kg m^{−3}) | Saturation constant of the substrate |

${K}_{d}$ | Cell decay rate |

${K}_{s}$ | Monod substrate saturation constant |

$Kd$ (d^{−1}) | Cell decay rate |

${S}_{i}$ (kg COD m^{−3}) | Substrate concentration |

${X}_{i}$ (kg COD m^{−3}) | Cells concentration |

${Y}_{1}$ | Substrate yield coefficient |

$\mathfrak{D}$ | Diffusion coefficient |

${\mu}_{max}$ | Maximum specific growth rate |

$\overrightarrow{u}$ | velocity vector |

F | external force applied to the fluid |

p | pressure |

$S{i}_{ent}$ | Boundary condition for the substrate |

$X{i}_{ent}$ | Boundary condition for the microorganism |

## Appendix A. FreeFem++ Code

**if**(

**mpisize**!= 3) { // total number of processes

**cout**<< ” sorry, number of processors !=3” <<

**endl**;

**exit**(1);}

**load**”medit”

**load**”iovtk”

**load**”gmsh”

**load**”msh3”

**load**”tetgen”

**load**”MUMPS_FreeFem”

**include ’’MPIGMRESmacro.idp’’**

**int**[

**int**] ffordert=1;

**int**[

**int**] ffordert1=[1,1,1];

**int**worldrank;

**mpiComm**comm(

**mpiCommWorld**, 0, 0);

**int**MPICommSize=

**mpiSize**(comm);

**int**MPIRank=

**mpiRank**(comm);

**int**intlet=6,sidedown=7,sideup=8,sky=9,inter=11;//labels

**mesh3**th1=

**gmshload3**(”cilinder1.msh”);

**int**numvertices=th1.

**nv**;

**int**numtriangle=th1.

**nt**;

**plot**(th1,

**wait**=

**true**);

**real**Numax1=2.85,Ks1=0.05,Kd1=0.9; //for sugar

**real**Numax4=1.8,Ks4=1.145,Kd4=0.04; //for propionic acid

**real**Numax8=3.9,Ks8=0.93,Kd8=0.037; //for acetic acid

**real**XIent=0.05,SIent=100,Hcont= 1 × 10

^{−7}; //values of reactor inlet concentrations (kg/m3 COD)

**real**Df=8.64 × 10

^{−3}; //Diffusion coefficient m2/d

**real**Q=7.0686; //flow (m3/s)

**int**conteo=0, cpu=

**clock**();

**real**T=0.01,dt=1.5 × 10−2; // T (d), dt(dias)

**fespace Vh**(th1,

**P13d**);

**fespace Nh**(th1,[

**P13d**,

**P13d**,

**P13d**,

**P13d**]);

**Nh**[u1,u2,u3,pp1],[v1,v2,v3,pp2];

**Vh**dU,VH,U;

**Vh**EpH1,EpH2,EpH3,IpHant=0,pHll=6,pHul=8.5,pHcat,IpHcal;

**Vh**si1,xi1,yi1,qi1,si2,xi2,yi2,qi2,si3,xi3,yi3,qi3,TCO2,TNH3=0.1;

**Vh**NuT,NuT1,NuT2,NuT3,TSiPac,TSiPb,TSiPva,TSiPp,IpH=0.6,INH3,KINH3=7.5;

**real**tmax1=45.8,tmin1=11,topt1=39.3,tmax2=47.3,tmin2=5.6,topt2=40.3,

**macro Grad(u)**[

**dx(u),dy(u),dz(u)**]

**//**

**macro div(u1,u2,u3) (dx(u1)+dy(u2)+dz(u3))//**

**macro grad(si) (dx(si)+dy(si)+dz(si))//**

**macro BAD(xi1,yi1) (int3d(th1)(1/dt*(xi1*yi1))**

**+int3d(th1)(Df/86400*(Grad(xi1)’*Grad(yi1)))**

**+int3d(th1)(-1/dt*convect(**[

**u1,u2,u3**]

**,-dt,xiold**[

**mpirank**]

**)*yi1)**

**) //**

**macro BDR(xi2,yi2) (int3d(th1)(1/dt*(xi2*yi2))**

**+int3d(th1)(Df*(Grad(xi2)’*Grad(yi2)))**

**-int3d(th1)((Nu**[

**mpirank**]

***siold**[

**mpirank**]

**/(Ks**[

**mpirank**]

**+siold**[

**mpirank**]

**)*IpH-**

**Kd**[

**mpirank**]

**)*xi2*yi2)**

**-int3d(th1)(1/dt*xiold**[

**mpirank**]

***yi2)**

**) //**

**macro SAD(si1,qi1) (int3d(th1)(1/dt*(si1*qi1))**

**+int3d(th1)(Df/86400*(Grad(si1)’*Grad(qi1)))**

**+int3d(th1)(-1/dt*convect(**[

**u1,u2,u3**]

**,-dt,siold**[

**mpirank**]

**)*qi1)**

**) //**

**macro SDR(si2,qi2) (int3d(th1)(1/dt*(si2*qi2))**

**+int3d(th1)(Df*(Grad(si2)’*Grad(qi2)))**

**+int3d(th1)(Nu**[

**mpirank**]

***siold**[

**mpirank**]

**/(Ks**[

**mpirank**]

**+siold**[

**mpirank**]

**)*IpH***

**Alpha**[

**mpirank**]

***xiold**[

**mpirank**]

***qi2)**

**-int3d(th1)(1/dt*siold**[

**mpirank**]

***qi2)**

**) //**

**func**vel=Q/(6*7.0686); // function of velocity (Q/m2)[m/seg]

**solve**stokes([u1,u2,u3,pp1],[v1,v2,v3,pp2]) =

**int3d**(th1,

**qforder**=3)(

**Grad(u1)**’*

**Grad(v1)**

**Grad(u2)**’*

**Grad(v2)**+

**Grad(u3)**’*

**Grad(v3)**

**div(u1,u2,u3)***pp2 -

**div(v1,v2,v3)***pp1 + 1e-10*pp2*pp1 )

**on**(sideup,u1=0,u2=0,u3=0) +

**on**(intlet,inter,u1=0,u2=0,u3=vel);

**savevtk**("velocity.vtk",th1,[u1,u2,u3],

**order**=ffordert1,

**dataname**="ui");

**Vh**[

**int**] Nu(

**mpisize**),Ks(

**mpisize**),siold(

**mpisize**),xiold(

**mpisize**),SiPac(

**mpisize**),

**mpisize**),SiPb(

**mpisize**),SiPva(

**mpisize**),SiPcl(

**mpisize**),

**mpisize**),NH3(

**mpisize**),sifont(

**mpisize**),sifontb(

**mpisize**),siV(

**mpisize**),

**mpisize**),CC1(

**mpisize**),tco21

**mpisize**),tnh31(

**mpisize**),CC2(

**mpisize**),tco22(

**mpisize**),tnh32(

**mpisize**);

**real**[

**int**] Kd(

**mpisize**),Alpha(

**mpisize**),XiaciZ(

**mpisize**),

**mpisize**),XiaceZ(

**mpisize**),SiaceZ(

**mpisize**),XimethZ(

**mpisize**),SimethZ

**mpisize**),SIcont(

**mpisize**),XIcont(

**mpisize**); // source coeficient

**if**(

**mpirank**==0){

**mpirank**]=0;siold[

**mpirank**]=0; //SUGAR

**mpirank**]=Numax1;Ks[

**mpirank**]=Ks1;};

**if**(

**mpirank**==1){

**mpirank**]=Kd4;Alpha[

**mpirank**]=11.29943503;xiold[

**mpirank**]=0;

**mpirank**]=0; // PROPIONIC ACID

**mpirank**];Nu[

**mpirank**]=Numax4;Ks[

**mpirank**]=Ks4;sifont[

**mpirank**];}

**if**(

**mpirank**==2){

**mpirank**]=Kd8;Alpha[

**mpirank**]=18.1812;xiold[

**mpirank**]=0;

**mpirank**]=0; // ACETIC ACID

**mpirank**];Nu[

**mpirank**]=Numax8;Ks[

**mpirank**]=Ks8;} // end mpirank

**int**nn=T/dt+2,ii,in=1; // loop

**for**(

**real**tt=0; tt<=T;tt+=dt)

**if**(ii==in){ // reactor feeding

**for**(

**int**mm=0;mm<=6; mm+=1)

**if**(

**mpirank**==0){

**solve**Bich1(xi1,yi1,

**solver**=

**GMRES**)=

**BAD(xi1,yi1)**

**on**(intlet,xi1=XIent)+

**on**(sideup,sidedown,xi1=0);

**solve**Sust1(si1,qi1,

**solver**=

**GMRES**)=

**SAD(si1,qi1)**

**on**(intlet,si1=SIent)+

**on**(sideup,sidedown,si1=0);

**mpirank**]=xi1;siold[

**mpirank**]=si1;

**if**(

**mpirank**==1){

**solve**Bich2(xi2,yi2,

**solver**=

**GMRES**)=

**BAD(xi2,yi2)**

**on**(intlet,xi2=XIent)+

**on**(sideup,sidedown,xi2=0);

**solve**Sust2(si2,qi2,

**solver**=

**GMRES**)=

**SAD(si2,qi2)**;

**mpirank**]=xi2;siold[

**mpirank**]=si2;

**if**(

**mpirank**==2){

**solve**Bich3(xi3,yi3,

**solver**=

**GMRES**)=

**BAD(xi3,yi3)**

**on**(intlet,xi3=XIent)+

**on**(sideup,sidedown,xi3=0);

**solve**Sust3(si3,qi3,

**solver**=

**GMRES**)=

**SAD(si3,qi3)**;

**mpirank**]=xi3;siold[

**mpirank**]=si3;

**if**(

**mpirank**==0){

**solve**Bich1(xi1,yi1,

**solver**=

**GMRES**)=

**BDR(xi1,yi1)**;

**solve**Sust1(si1,qi1,

**solver**=

**GMRES**)=

**SDR(si1,qi1)**;

**mpirank**]=xi1;siold[

**mpirank**]=si1;

**mpirank**]=siold[

**mpirank**]*2.669537137/10.76426265;SiPp[

**mpirank**]=

**mpirank**]*3.139935414/10.76426265;

**for**(

**int**i=0;i<

**Vh**.

**ndof**;i+=1){

**if**(xiold[

**mpirank**][](i)<=0.1e-9){xiold[

**mpirank**][](i)=0;}

**if**(siold[

**mpirank**][](i)>=SIent){siold[

**mpirank**][](i)=SIent;}

**if**(siold[

**mpirank**][](i)< 0.1e-9){siold[

**mpirank**][](i)=0;SiPac[

**mpirank**][](i)=0;

**mpirank**][](i)=0; }

**if**(siold[

**mpirank**][](i)/10.76426265>=xiold[

**mpirank**][](i)){SiPac[

**mpirank**][](i)=

**mpirank**][](i);

**mpirank**][](i)=3.139935414*xiold[

**mpirank**][](i); ;}

**processor**(1) << SiPp[

**mpirank**][] ;

**processor**(2) << SiPac[

**mpirank**][];

**savevtk**("Acidsugar_xi"+ii+".vtk",th1,xiold[

**mpirank**],

**order**=ffordert,

**dataname**="Xi_hidrol");

**savevtk**("Acidsugar_si"+ii+".vtk",th1,siold[

**mpirank**],

**order**=ffordert,

**dataname**="Si_hidrol");

**if**(

**mpirank**==1){

**processor**(0) » SiPp[0][];

**mpirank**]= SiPp[0];

**solve**Bich2(xi2,yi2,

**solver**=

**GMRES**)=

**BDR(xi2,yi2)**;

**solve**Sust2(si2,qi2,

**solver**=

**GMRES**)=

**SDR(si2,qi2)**

**int3d**(th1)(sifont[

**mpirank**]*qi2);

**mpirank**]=xi2;siold[

**mpirank**]=si2;

**mpirank**]=siold[

**mpirank**]*6.0307/11.294; Choice of the smallest value between Si y Xi

**for**(

**int**i=0;i<

**Vh**.

**ndof**;i+=1){

**if**(xiold[

**mpirank**][](i)<=0.1e-9){xiold[

**mpirank**][](i)=0;}

**if**(siold[

**mpirank**][](i)< 0.1e-9){siold[

**mpirank**][](i)=0;

**mpirank**][](i)=0;SiPp[

**mpirank**][](i)=0; }

**if**(siold[

**mpirank**][](i)/11.294>=xiold[

**mpirank**][](i)){SiPac[

**mpirank**][](i)=

**mpirank**][](i);};

**processor**(2) << SiPac[

**mpirank**][];

**savevtk**("Propionic_xi"+ii+".vtk",th1,xiold[

**mpirank**],

**order**=ffordert,

**dataname**="Xi_propionic");

**savevtk**("Propionic_si"+ii+".vtk",th1,siold[

**mpirank**],

**order**=ffordert,

**dataname**="Si_propionic");

**if**(

**mpirank**==2){

**processor**(0) » SiPac[0][];

**processor**(1) » SiPac[1][];

**mpirank**]= SiPac[0]+SiPac[1];

**solve**Bich3(xi3,yi3,

**solver**=

**GMRES**)=

**BDR(xi3,yi3)**;

**solve**Sust3(si3,qi3,

**solver**=

**GMRES**)=

**SDR(si3,qi3)**

**int3d**(th1)(sifont[

**mpirank**]*qi3);

**mpirank**]=xi3;siold[

**mpirank**]=si3;

**for**(

**int**i=0;i<

**Vh**.

**ndof**;i+=1){

**if**(xiold[

**mpirank**][](i)<=0.1e-9){xiold[

**mpirank**][](i)=0;}

**if**(siold[

**mpirank**][](i)< 0.1e-9){siold[

**mpirank**][](i)=0;}

**savevtk**("Acetico_xi"+ii+".vtk",th1,xiold[

**mpirank**],

**order**=ffordert,

**dataname**="Xi_acetic");

**savevtk**("Acetico_si"+ii+".vtk",th1,siold[

**mpirank**],

**order**=ffordert,

**dataname**="Si_acetic");

## References

- States, N.; Stone, E.; Cole, R. Creating Meaningful Learning Opportunities through Incorporating Local Research into Chemistry Classroom Activities. Educ. Sci.
**2023**, 13, 192. [Google Scholar] [CrossRef] - Camilleri, M.A.; Camilleri, A.C. Digital Learning Resources and Ubiquitous Technologies in Education. Technol. Knowl. Learn.
**2017**, 22, 65–82. [Google Scholar] [CrossRef] - Liu, D.; Valdiviezo-Díaz, P.; Riofrio, G.; Sun, Y.M.; Barba, R. Integration of Virtual Labs into Science E-learning. Procedia Comput. Sci.
**2015**, 75, 95–102. [Google Scholar] [CrossRef] [Green Version] - Watts, J.; Crippen, K.J.; Payne, C.; Imperial, L.; Veige, M. The varied experience of undergraduate students during the transition to mandatory online chem lab during the initial lockdown of the COVID-19 pandemic. Discip. Interdiscip. Sci. Educ. Res.
**2022**, 4, 14. [Google Scholar] [CrossRef] - Appels, L.; Lauwers, J.; Degrève, J.; Helsen, L.; Lievens, B.; Willems, K.; Van Impe, J.; Dewil, R. Anaerobic digestion in global bio-energy production: Potential and research challenges. Renew. Sustain. Energy Rev.
**2011**, 15, 4295–4301. [Google Scholar] [CrossRef] - Guzmán, J.L.; Joseph, B. Web-Based Virtual Lab for Learning Design, Operation, Control, and Optimization of an Anaerobic Digestion Process. J. Sci. Educ. Technol.
**2021**, 30, 319–330. [Google Scholar] [CrossRef] - Husain, A. Mathematical models of the kinetics of anaerobic digestion—A selected review. Biomass Bioenergy
**1998**, 14, 561–571. [Google Scholar] [CrossRef] - Wade, M.J. Not Just Numbers: Mathematical Modelling and Its Contribution to Anaerobic Digestion Processes. Processes
**2020**, 8, 888. [Google Scholar] [CrossRef] - Batstone, D.J.; Puyol, D.; Flores-Alsina, X.; Rodríguez, J. Mathematical modelling of anaerobic digestion processes: Applications and future needs. Rev. Environ. Sci. Bio/Technol.
**2015**, 14, 595–613. [Google Scholar] [CrossRef] - Borisov, M.; Dimitrova, N.; Simeonov, I. Mathematical Modelling of Anaerobic Digestion with Hydrogen and Methane Production. IFAC PapersOnLine
**2016**, 49, 231–238. [Google Scholar] [CrossRef] - Batstone, D.; Keller, J.; Angelidaki, I.; Kalyuzhnyi, S.; Pavlostathis, S.; Rozzi, A.; Sanders, W.; Siegrist, H.; Vavilin, V. The IWA Anaerobic Digestion Model No 1 (ADM1). Water Sci. Technol.
**2002**, 45, 65–73. [Google Scholar] [CrossRef] [PubMed] - Kleerebezem. Critical analysis of some concepts proposed in ADM1. Water Sci. Technol.
**2006**, 54, 51–57. [Google Scholar] [CrossRef] [PubMed] [Green Version] - Li, L.; Wang, K.; Zhao, Q.; Gao, Q.; Zhou, H.; Jiang, J.; Mei, W. A critical review of experimental and CFD techniques to characterize the mixing performance of anaerobic digesters for biogas production. Rev. Environ. Sci. Bio/Technol.
**2022**, 21, 665–689. [Google Scholar] [CrossRef] - Hoff, C.; Aurandt, J.; O’Toole, M.; Davis, G. Motivating Student Learning Using Biofuel-Based Activities. In Proceedings of the 2013 ASEE Annual Conference & Exposition (Online), Atlanta, GA, USA, 22–26 June 2020; Available online: https://peer.asee.org/19019 (accessed on 24 January 2023).
- Nanou, P.; Kuchta, D.I.K. Knowledge Transfer Networks in the Field of Biological Waste Treatment: Current Status; Literature Review; Hamburg University of Technology: Hamburg, Germany, 2015. [Google Scholar]
- Sadino-Riquelme, C.; Hayes, R.E.; Jeison, D.; Donoso-Bravo, A. Computational fluid dynamic (CFD) modelling in anaerobic digestion: General application and recent advances. Crit. Rev. Environ. Sci. Technol.
**2018**, 48, 39–76. [Google Scholar] [CrossRef] - Song, L.; Li, P.W.; Gu, Y.; Fan, C.M. Generalized finite difference method for solving stationary 2D and 3D Stokes equations with a mixed boundary condition. Comput. Math. Appl.
**2020**, 80, 1726–1743. [Google Scholar] [CrossRef] - Ukai, S. A solution formula for the Stokes equation in Rn+. Commun. Pur. Appl. Math.
**1987**, 40, 611–621. [Google Scholar] [CrossRef] [Green Version] - Parshotam, A.; Mcnabb, A.; Wake, G. Comparison Theorems for Coupled Reaction-Diffusion Equations in Chemical Reactor Analysis. J. Math. Anal. Appl.
**1993**, 178, 196–220. [Google Scholar] [CrossRef] [Green Version] - Muloiwa, M.; Nyende-Byakika, S.; Dinka, M. Comparison of unstructured kinetic bacterial growth models. S. Afr. J. Chem. Eng.
**2020**, 33, 141–150. [Google Scholar] [CrossRef] - Monod, J. The Growth of Bacterial Cultures. Annu. Rev. Microbiol.
**1949**, 3, 371–394. [Google Scholar] [CrossRef] [Green Version]

**Figure 1.**Red: Neumann boundary value problem; Blue: Dirichlet boundary value problem; boundary = $\partial \mathsf{\Omega}={\mathsf{\Gamma}}_{1}\cup {\mathsf{\Gamma}}_{2}$; $\varphi $ and g are given function defined on ${\mathsf{\Gamma}}_{1}\phantom{\rule{5.69054pt}{0ex}}\mathrm{and}\phantom{\rule{5.69054pt}{0ex}}{\mathsf{\Gamma}}_{2}$; n = unit normal vector.

**Figure 3.**Perspective and top views of velocity field. The arrows represent the projection of the normalized velocity vectors, i.e., the behavior of the non-normal velocity components. The magnitude of the velocity vector is indicated by the size of the arrow and the intensity of the color in the key of the figure.

**Figure 4.**Substrate (

**a**) and cells (

**b**) at time t = 19 days. The keys at the right of the figure indicate microbial and substrates concentrations in kg (COD).

**Figure 5.**COD distribution at 26 days for biomass (

**top**) and substrates (

**bottom**): (

**a**) acidogenesis, (

**b**) acetogenesis, and (

**c**) methanogenesis. The keys at the right of the figure indicate microbial and substrates concentrations in kg (COD).

**Figure 6.**Representation of cell concentrations in the planes: (

**a**) longitudinal, parallel to the xz plane and cutting the cylinder into two equal parts, and (

**b**) transverse, parallel to the axis of the xy plane and located at a vertical height of 0.8 m.

**Figure 7.**Evolution of COD concentrations in the NSAR along the y-axis (

**a**), for the acidogenesis of sugars (

**b**), the acetogenesis of propionic acid (

**c**) and the methanogenesis of acetic acid (

**d**).

Process | ${\mathit{\mu}}_{\mathit{max}}$ | $\mathfrak{D}$ | ${\mathit{Si}}_{\mathit{ent}}$ | ${\mathit{Xi}}_{\mathit{ent}}$ | ${\mathit{K}}_{\mathit{d}}$ | ${\mathit{K}}_{\mathit{s}}$ | $\mathit{\alpha}$ |
---|---|---|---|---|---|---|---|

d^{−1} | m^{2}·d^{−1} | kg· m^{−3} | kg· m^{−3} | d^{−1} | kg· m^{−3} | kg · kg^{−1} | |

1 | 2.85 | $8\xb7{10}^{-3}$ | 100 | 0.05 | 0.9 | 0.05 | 10.76 |

2 | 1.8 | $8\xb7{10}^{-3}$ | - | 0.05 | 0.04 | 1.145 | 11.29 |

3 | 3.9 | $8\xb7{10}^{-3}$ | - | 0.05 | 0.037 | 0.93 | 18.18 |

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. |

© 2023 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/).

## Share and Cite

**MDPI and ACS Style**

Brito-Espino, S.; García-Ramírez, T.; Leon-Zerpa, F.; Mendieta-Pino, C.; Santana, J.J.; Ramos-Martín, A.
E-Learning Proposal for 3D Modeling and Numerical Simulation with FreeFem++ for the Study of the Discontinuous Dynamics of Biological and Anaerobic Digesters. *Water* **2023**, *15*, 1181.
https://doi.org/10.3390/w15061181

**AMA Style**

Brito-Espino S, García-Ramírez T, Leon-Zerpa F, Mendieta-Pino C, Santana JJ, Ramos-Martín A.
E-Learning Proposal for 3D Modeling and Numerical Simulation with FreeFem++ for the Study of the Discontinuous Dynamics of Biological and Anaerobic Digesters. *Water*. 2023; 15(6):1181.
https://doi.org/10.3390/w15061181

**Chicago/Turabian Style**

Brito-Espino, Saulo, Tania García-Ramírez, Federico Leon-Zerpa, Carlos Mendieta-Pino, Juan J. Santana, and Alejandro Ramos-Martín.
2023. "E-Learning Proposal for 3D Modeling and Numerical Simulation with FreeFem++ for the Study of the Discontinuous Dynamics of Biological and Anaerobic Digesters" *Water* 15, no. 6: 1181.
https://doi.org/10.3390/w15061181