<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article">
 <front>
  <journal-meta>
   <journal-id journal-id-type="publisher-id">
    eng
   </journal-id>
   <journal-title-group>
    <journal-title>
     Engineering
    </journal-title>
   </journal-title-group>
   <issn pub-type="epub">
    1947-3931
   </issn>
   <issn publication-format="print">
    1947-394X
   </issn>
   <publisher>
    <publisher-name>
     Scientific Research Publishing
    </publisher-name>
   </publisher>
  </journal-meta>
  <article-meta>
   <article-id pub-id-type="doi">
    10.4236/eng.2025.1710029
   </article-id>
   <article-id pub-id-type="publisher-id">
    eng-146543
   </article-id>
   <article-categories>
    <subj-group subj-group-type="heading">
     <subject>
      Articles
     </subject>
    </subj-group>
    <subj-group subj-group-type="Discipline-v2">
     <subject>
      Engineering
     </subject>
    </subj-group>
   </article-categories>
   <title-group>
    A Finite Element Stiffness Method for Modeling Solute Transport in Reverse Osmosis Membranes
   </title-group>
   <contrib-group>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Farah
      </surname>
      <given-names>
       Najdawi
      </given-names>
     </name>
    </contrib>
   </contrib-group> 
   <aff id="affnull">
    <addr-line>
     aMaterials Science, Engineering and Commercialization Program, Texas State University, San Marcos, TX, USA
    </addr-line> 
   </aff> 
   <pub-date pub-type="epub">
    <day>
     22
    </day> 
    <month>
     10
    </month>
    <year>
     2025
    </year>
   </pub-date> 
   <volume>
    17
   </volume> 
   <issue>
    10
   </issue>
   <fpage>
    501
   </fpage>
   <lpage>
    528
   </lpage>
   <history>
    <date date-type="received">
     <day>
      29,
     </day>
     <month>
      August
     </month>
     <year>
      2025
     </year>
    </date>
    <date date-type="published">
     <day>
      19,
     </day>
     <month>
      August
     </month>
     <year>
      2025
     </year> 
    </date> 
    <date date-type="accepted">
     <day>
      19,
     </day>
     <month>
      October
     </month>
     <year>
      2025
     </year> 
    </date>
   </history>
   <permissions>
    <copyright-statement>
     © Copyright 2014 by authors and Scientific Research Publishing Inc. 
    </copyright-statement>
    <copyright-year>
     2014
    </copyright-year>
    <license>
     <license-p>
      This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
     </license-p>
    </license>
   </permissions>
   <abstract>
    With increasing freshwater demand and rising water scarcity, reverse osmosis (RO) has become a key method for seawater desalination; however, accurately modeling RO remains challenging due to its complex, nonlinear processes. This study develops a new mass transport model by coupling the Advection-Diffusion Model (ADM) with the Solution-Diffusion Model (SDM), and it is solved by using the Finite Element Method (FEM) with the linear stiffness approach. The extended ADM-SDM framework combines both advective and diffusive transport forces and calculates osmotic pressure. The model is validated against COMSOL simulations and commercial RO module data, finding accurate prediction of solute concentration and permeate flux, with errors as low as 0.7% for SW30-2514 and 2.6% for SW30-4021 compared to commercial RO module data. Unlike the traditional SDM, the extended ADM-SDM framework captures advective transport effects, leading to improved permeate flux estimation while maintaining 100% salt rejection. The numerical stability was further validated by mesh sensitivity analysis, which also demonstrated the robustness and effectiveness of the FEM stiffness implementation by showing that outlet flux errors successfully converged to zero across refinements.
   </abstract>
   <kwd-group> 
    <kwd>
     Advection-Diffusion Model
    </kwd> 
    <kwd>
      Nernst-Planck Model
    </kwd> 
    <kwd>
      Finite Element Method
    </kwd> 
    <kwd>
      Stiffness Matrix Method
    </kwd> 
    <kwd>
      Mesh Sensitivity Analysis
    </kwd> 
    <kwd>
      Net Driving Force Pressure
    </kwd>
   </kwd-group>
  </article-meta>
 </front>
 <body>
  <sec id="s1">
   <title>1. Introduction</title>
   <p>The mass transport through membranes can be described by various mathematical relations. The transport mathematical models are derived from one of the two main group models: irreversible thermodynamic and hydrodynamic model <xref ref-type="bibr" rid="scirp.146543-1">
     [1]
    </xref>. The irreversible thermodynamic connects the fluxes of solvent in feed water with driving forces by linear relationship such as solution diffusion model. Also, the equation is independent of membrane structure <xref ref-type="bibr" rid="scirp.146543-2">
     [2]
    </xref>. Over the years, many different salt rejection irreversible thermodynamic and hydrodynamic models have been created to explore the effective rejection of salt ions in RO systems. The hydrodynamic model refers to mass movement carried along by bulk fluid motion <xref ref-type="bibr" rid="scirp.146543-3">
     [3]
    </xref>. Thermodynamic transport occurs through diffusion, where molecules dissolve into a medium and migrate along concentration gradients <xref ref-type="bibr" rid="scirp.146543-4">
     [4]
    </xref>. This study utilizes both models.</p>
   <p>Irreversible thermodynamics uses linear relationships, such as the solution diffusion model SDM, to relate solvent fluxes in feed water to driving forces. For instance, <xref ref-type="bibr" rid="scirp.146543-5">
     [5]
    </xref> shows that the Na<sup>+</sup>/K<sup>+</sup> pump functions irreversibly by employing adenosine triphosphate (ATP) to drive ions against their gradients, underscoring the rationale for neuronal models to emphasize active transport mechanisms over passive diffusion. <xref ref-type="bibr" rid="scirp.146543-6">
     [6]
    </xref> used dimensionless variables and algebraic equations to create a simplified framework for standardizing flux prediction in membranes. Their work, based on the solution-diffusion model and compared with the solution-friction model, shows both the strengths and limits of assuming constant transport parameters. <xref ref-type="bibr" rid="scirp.146543-7">
     [7]
    </xref> demonstrated that substrate hydrophilicity affects the structure and efficacy of thin film composite nanofiltration in reverse osmosis membranes. Their results are consistent with the irreversible thermodynamic solution-diffusion model, which posits that transport is governed by sorption and diffusion rather than hydrodynamic pore flow.</p>
   <p>It also considers non-linear connections for irreversible thermodynamics models, like the Nernst-Planck Model (NPM), to accurately describe mass transport. The equation is independent of membrane structure <xref ref-type="bibr" rid="scirp.146543-8">
     [8]
    </xref>. The NPM is derived from the Maxwell Stephan Equation and can be used to observe how transported water is contaminated as it passes through a membrane in reverse osmosis <xref ref-type="bibr" rid="scirp.146543-9">
     [9]
    </xref>. Also, it accounts for coupled transport phenomena, including the interactions among water, solutes, and the membrane material <xref ref-type="bibr" rid="scirp.146543-10">
     [10]
    </xref>. This enables precise predictions of water flux and solute rejection.</p>
   <p>The osmotic pressure of the treated water becomes the first measurement derived from SDM. In this study, SDM is used to calculate the total net pressure required for system operation. <xref ref-type="bibr" rid="scirp.146543-11">
     [11]
    </xref> investigated low salt rejection performance in RO membrane systems using module-scale analysis. In addition to determining the system’s specific energy consumption, they examined the impact of feed concentration on brine concentration and permeability flux. <xref ref-type="bibr" rid="scirp.146543-12">
     [12]
    </xref> compared the pore flow model and SDM to examine transport mechanisms in RO membranes. In order to investigate the existence of a pure water layer at the sodium chloride-cellulose acetate membrane interface and enhance membrane performance and desalination technology, they reviewed the Gibbs Adsorption Isotherm.</p>
   <p>
    <xref ref-type="bibr" rid="scirp.146543-"></xref><xref ref-type="bibr" rid="scirp.146543-13">
     [13]
    </xref> validated NPM, by creating an inverse averaging finite element method (IAFEM) to investigate salt permeability in nanofiltration systems under various feed salt concentrations and pressures. In addition to addressing numerical instability and convergence issues related to convection-dominated NPM and large-scale nanopore systems, the study examined pressure drop distributions across membranes, refuting the assumption of no pressure drop in the solution-diffusion model.</p>
   <p>In order to investigate the permeate pH across a RO membrane, Zhang, Hamelers, and <xref ref-type="bibr" rid="scirp.146543-14">
     [14]
    </xref> used the Donnan steric model to model the transport ion mechanism. The results showed that the permeate pH value relied highly on the membrane charge density and less significant effected by salt concentration and feed flux. Also, the permeate pH level might be lower or higher than feed pH solution and this is determined by the polarity of the membrane charged. <xref ref-type="bibr" rid="scirp.146543-15">
     [15]
    </xref> simulated the impact of initial pH on salt ion transport during the first two hours of saltwater electrolysis using a validated Nernst-Planck ion transport model in COMSOL. In order to overcome a major obstacle and increase the feasibility of green hydrogen production, they discovered that adjusting the initial pH can significantly reduce the transport of chloride ions between the anolyte and catholyte.</p>
   <p>While the Simplified SDM assumes constant diffusivity and permeability, which can actually vary, other researchers like <xref ref-type="bibr" rid="scirp.146543-13">
     [13]
    </xref> <xref ref-type="bibr" rid="scirp.146543-15">
     [15]
    </xref> and <xref ref-type="bibr" rid="scirp.146543-16">
     [16]
    </xref> have investigated ion transport using the NPM. However, our study distinguishes FROM existing literature by concentrating on the numerical implementation and validation of mass transport models. It particularly fills in the gaps left by earlier studies, which often lacked comprehensive validation and infrequently used sophisticated numerical techniques like the linear stiffness approach in the FEM. This FEM-based method offers a balance between high accuracy and stability and less computational complexity than traditional Computational Fluid Dynamics (CFD) models.</p>
   <p>In order to address the limitations of the basic SDM, this study develops the solution diffusion model and advection diffusion model (SDM-ADM) by adding the advection term from NPM. This expanded model takes into consideration different ion transport forces in addition to osmotic pressure. The FEM-linear stiffness approach is used to solve the SDM-ADM model, and the results are compared to experimental data and CFD-COMSOL simulations.</p>
   <p>Following the introduction and literature review, the remainder of the paper is organized as follows. Section 2 presents the methodology, describing the Extended SDM-ADM model, the application of the Finite Element Method (FEM) to solve ADM, and the use of COMSOL Multiphysics. Section 3 reports the results from the FEM stiffness method, including concentration and flux profiles along the membrane length, the effects of varying boundary condition configurations in ADM, and a mesh sensitivity analysis. Section 4 provides the results from COMSOL Multiphysics simulations, while Section 5 examines solvent behavior in the SDM. Section 6 compares the outcomes with commercial RO modules. Finally, Section 7 presents the conclusions of this work. <xref ref-type="table" rid="table1">
     Table 1
    </xref> summarizes the notation and unit of the model parameters.</p>
   <table-wrap id="table1">
    <label>
     <xref ref-type="table" rid="table1">
      Table 1
     </xref></label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.146543-"></xref>Table 1. Notation description.</title>
    </caption>
    <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td class="custom-bottom-td acenter" width="17.73%"><p style="text-align:center">Symbol</p></td> 
      <td class="custom-bottom-td acenter" width="62.04%"><p style="text-align:center">Definition</p></td> 
      <td class="custom-bottom-td acenter" width="20.23%"><p style="text-align:center">Unit</p></td> 
     </tr> 
     <tr> 
      <td class="custom-top-td acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msub> 
           <mi>
             J 
           </mi> 
           <mi>
             i 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
      <td class="custom-top-td acenter" width="62.04%"><p style="text-align:center">Flux of solute i through the membrane</p></td> 
      <td class="custom-top-td acenter" width="20.23%"><p style="text-align:center">m<sup>3</sup>/(s·m<sup>2</sup>)</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msub> 
           <mi>
             D 
           </mi> 
           <mi>
             i 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Diffusion coefficient of solute i</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">m<sup>2</sup>/s</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mo>
            ∇ 
          </mo> 
          <msub> 
           <mi>
             c 
           </mi> 
           <mi>
             i 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Concentration gradient of solute i</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">mol/m<sup>3</sup>·m</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msub> 
           <mi>
             c 
           </mi> 
           <mi>
             i 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Concentration of solute i</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">mol/m<sup>3</sup></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
           v 
         </mi> 
        </math></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Flow (advective) velocity</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">m/s</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            C 
          </mi> 
          <mrow> 
           <mo>
             ( 
           </mo> 
           <mrow> 
            <mi>
              x 
            </mi> 
            <mo>
              , 
            </mo> 
            <mi>
              t 
            </mi> 
           </mrow> 
           <mo>
             ) 
           </mo> 
          </mrow> 
         </mrow> 
        </math></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Solute concentration</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">mol/m<sup>3</sup></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msub> 
           <mi>
             D 
           </mi> 
           <mrow> 
            <mtext>
              eff 
            </mtext> 
           </mrow> 
          </msub> 
         </mrow> 
        </math></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Effective solute diffusivity</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">m<sup>2</sup>/s</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msub> 
           <mi>
             D 
           </mi> 
           <mn>
             0 
           </mn> 
          </msub> 
         </mrow> 
        </math></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Bulk diffusivity</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">m<sup>2</sup>/s</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
           α 
         </mi> 
        </math></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Solute-membrane interaction coefficient</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">-</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center">K</p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Stiffness matrix in FEM</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">-</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msub> 
           <mi>
             ϕ 
           </mi> 
           <mi>
             i 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">test function</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">-</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mrow> 
           <mo>
             { 
           </mo> 
           <mi>
             F 
           </mi> 
           <mo>
             } 
           </mo> 
          </mrow> 
         </mrow> 
        </math></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Force vector (boundary conditions and source terms)</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">-</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center">L</p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Element length in FEM mesh</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">m</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center">A<sub>w</sub></p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Water permeability coefficient</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">m/(s·Pa)</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center">Q</p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Solvent (water) flux</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">m<sup>3</sup>/day</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center">ΔP</p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Net driving pressure across membrane</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">Pa</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.73%"><p style="text-align:center">RR</p></td> 
      <td class="acenter" width="62.04%"><p style="text-align:center">Salt rejection</p></td> 
      <td class="acenter" width="20.23%"><p style="text-align:center">%</p></td> 
     </tr> 
    </table>
   </table-wrap>
  </sec><sec id="s2">
   <title>2. Methodology</title>
   <sec id="s2_1">
    <title>2.1. The Extended SDM-ADM Model</title>
    <p>The objective of this section is to solve the extended model which is derived from NPM to determine the concentration profile within the RO membrane and other design parameters of the membrane. In fact, NPM describes the ions motion in RO membrane composed of three forces: diffusion, advection and electromigration. To simplify our analysis and also differentiate our contribution from previous research, we focus solely on the diffusion and the advection as the driving forces of salt ions through the RO membrane, disregarding the impact of electromigration force. This is because for typical RO desalination of seawater, the feed solution is electrically neutral <xref ref-type="bibr" rid="scirp.146543-14">
      [14]
     </xref> In such a condition the contribution of electromigration force is minimal compared to conviction and advection forces. By neglecting the electromigration force, the NPM can be written as:</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          J 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mo>
         − 
       </mo> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
       <mo>
         ∇ 
       </mo> 
       <msub> 
        <mi>
          c 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
       <mo>
         − 
       </mo> 
       <msub> 
        <mi>
          c 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
       <mi>
         v 
       </mi> 
      </mrow> 
     </math> (1)</p>
    <p>where, 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          J 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math> is the flux of ion i in m<sup>3</sup>/s/m<sup>2</sup>, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math> is the diffusion coefficient of ion i in m<sup>2</sup>/s, 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mo>
         ∇ 
       </mo> 
       <msub> 
        <mi>
          c 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math> is the concentration gradient of ion i in mole/m<sup>3</sup>, 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          c 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math> the concentration of ion i in mole/m<sup>3</sup>, and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        v 
      </mi> 
     </math> the flow velocity in m/s.</p>
    <p>Equation (1) is also referred to as the advanced diffusion model (ADM) and describes the transport of solutes within the membrane. In RO membrane systems, solute transport is governed by both diffusion (random molecular motion) and advection (bulk fluid movement). To solve ADM, we apply FEM using the stiffness approach. We still employ the SDM to capture the osmotic pressure-driven movement of the solvent through the RO membrane. By coupling the ADM and SDM, we are able to investigate the three fundamental forces: advection, osmotic pressure, and diffusion, as they jointly govern solute and solvent transport in RO membranes.</p>
    <p>By converting the ADM model to a system of algebraic equations and solving for the unknown parameters, such as 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          c 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math> and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          J 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math>, the FEM provides a reliable numerical approach for obtaining the solution of the new extend model (ADM and SDM) equation. The input parameters for the new extend models are: membrane geometry, feed water, and operating conditions.</p>
    <p>The initial step to solve the ADM and SDM by FEM is to define the geometry of the RO membrane, the boundary conditions, and the initial ion concentrations, i.e., feed concentration. The general solute transport equation in one dimension (i.e., x-direction) can be described as follows:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mfrac> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           t 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         + 
       </mo> 
       <mi>
         v 
       </mi> 
       <mfrac> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         = 
       </mo> 
       <mfrac> 
        <mo>
          ∂ 
        </mo> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           x 
         </mi> 
         <mo> 
         </mo> 
        </mrow> 
       </mfrac> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msub> 
          <mi>
            D 
          </mi> 
          <mrow> 
           <mtext>
             eff 
           </mtext> 
          </mrow> 
         </msub> 
         <mfrac> 
          <mrow> 
           <mo>
             ∂ 
           </mo> 
           <mi>
             C 
           </mi> 
          </mrow> 
          <mrow> 
           <mo>
             ∂ 
           </mo> 
           <mi>
             x 
           </mi> 
          </mrow> 
         </mfrac> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         + 
       </mo> 
       <mi>
         R 
       </mi> 
      </mrow> 
     </math> (2)</p>
    <p>where 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         C 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           x 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           t 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> is the solute concentration with unit mol/m<sup>3</sup>, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        t 
      </mi> 
     </math> is the time of solute transport in RO membrane (Second) and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        v 
      </mi> 
     </math> is the advective velocity (m/s), 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mrow> 
         <mtext>
           eff 
         </mtext> 
        </mrow> 
       </msub> 
      </mrow> 
     </math> is the effective solute diffusivity (m<sup>2</sup>/s), and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        R 
      </mi> 
     </math> is the rejection or adsorption factor.</p>
    <p>
     <xref ref-type="bibr" rid="scirp.146543-"></xref>In Equation (2), the left-hand side represents the rate of change of solute concentration and the advective transport of solute. The right-hand side represents diffusion and any reaction terms. 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mrow> 
         <mtext>
           eff 
         </mtext> 
        </mrow> 
       </msub> 
      </mrow> 
     </math> is the effective solute diffusivity and mathematically can be computed by:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mrow> 
         <mtext>
           eff 
         </mtext> 
        </mrow> 
       </msub> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <msup> 
        <mtext>
          e 
        </mtext> 
        <mrow> 
         <mo>
           − 
         </mo> 
         <mi>
           α 
         </mi> 
         <mi>
           C 
         </mi> 
        </mrow> 
       </msup> 
      </mrow> 
     </math> (3)</p>
    <p>where 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
      </mrow> 
     </math> is the bulk diffusivity (m<sup>2</sup>/s), and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        α 
      </mi> 
     </math> is the solute interaction coefficient. Several assumptions are made to solve the Advection-Diffusion Model (ADM), including: 1) steady-state, where 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mfrac> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           t 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         = 
       </mo> 
       <mn>
         0 
       </mn> 
      </mrow> 
     </math>, and 2) small concentration changes in which 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mtext>
          e 
        </mtext> 
        <mrow> 
         <mo>
           − 
         </mo> 
         <mi>
           α 
         </mi> 
         <mi>
           C 
         </mi> 
        </mrow> 
       </msup> 
       <mo>
         ≈ 
       </mo> 
       <mn>
         1 
       </mn> 
       <mo>
         − 
       </mo> 
       <mi>
         α 
       </mi> 
       <mi>
         C 
       </mi> 
      </mrow> 
     </math>, and no adsorption or degradation and mathematically can be described as follows:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <mfrac> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         = 
       </mo> 
       <mfrac> 
        <mo>
          ∂ 
        </mo> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           x 
         </mi> 
         <mo> 
         </mo> 
        </mrow> 
       </mfrac> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msub> 
          <mi>
            D 
          </mi> 
          <mn>
            0 
          </mn> 
         </msub> 
         <msup> 
          <mtext>
            e 
          </mtext> 
          <mrow> 
           <mo>
             − 
           </mo> 
           <mi>
             α 
           </mi> 
           <mi>
             C 
           </mi> 
          </mrow> 
         </msup> 
         <mfrac> 
          <mrow> 
           <mo>
             ∂ 
           </mo> 
           <mi>
             C 
           </mi> 
          </mrow> 
          <mrow> 
           <mo>
             ∂ 
           </mo> 
           <mi>
             x 
           </mi> 
          </mrow> 
         </mfrac> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> (4)</p>
    <p>By expanding the right-hand side and rearranging Equation (4), it can be written as follows:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <mfrac> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           C 
         </mi> 
         <mo> 
         </mo> 
         <mo> 
         </mo> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           x 
         </mi> 
         <mo> 
         </mo> 
        </mrow> 
       </mfrac> 
       <mo>
         + 
       </mo> 
       <mi>
         α 
       </mi> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <msup> 
        <mtext>
          e 
        </mtext> 
        <mrow> 
         <mo>
           − 
         </mo> 
         <mi>
           α 
         </mi> 
         <mi>
           C 
         </mi> 
        </mrow> 
       </msup> 
       <msup> 
        <mrow> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <mfrac> 
            <mrow> 
             <mo>
               ∂ 
             </mo> 
             <mi>
               C 
             </mi> 
            </mrow> 
            <mrow> 
             <mo>
               ∂ 
             </mo> 
             <mi>
               x 
             </mi> 
            </mrow> 
           </mfrac> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
        </mrow> 
        <mn>
          2 
        </mn> 
       </msup> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <msup> 
        <mtext>
          e 
        </mtext> 
        <mrow> 
         <mo>
           − 
         </mo> 
         <mi>
           α 
         </mi> 
         <mi>
           C 
         </mi> 
        </mrow> 
       </msup> 
       <mfrac> 
        <mrow> 
         <msup> 
          <mo>
            ∂ 
          </mo> 
          <mn>
            2 
          </mn> 
         </msup> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <msup> 
          <mi>
            x 
          </mi> 
          <mn>
            2 
          </mn> 
         </msup> 
        </mrow> 
       </mfrac> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <msup> 
        <mtext>
          e 
        </mtext> 
        <mrow> 
         <mo>
           − 
         </mo> 
         <mi>
           α 
         </mi> 
         <mi>
           C 
         </mi> 
        </mrow> 
       </msup> 
       <mfrac> 
        <mrow> 
         <msup> 
          <mo>
            ∂ 
          </mo> 
          <mn>
            2 
          </mn> 
         </msup> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <msup> 
          <mi>
            x 
          </mi> 
          <mn>
            2 
          </mn> 
         </msup> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> (5)</p>
    <p>
     <xref ref-type="bibr" rid="scirp.146543-"></xref>Since 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        C 
      </mi> 
     </math> is small, the term 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         α 
       </mi> 
       <mi>
         C 
       </mi> 
      </mrow> 
     </math> is also small, we neglect higher-order terms 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          α 
        </mi> 
        <mn>
          2 
        </mn> 
       </msup> 
       <mi>
         C 
       </mi> 
      </mrow> 
     </math>, reducing Equation (5) to:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <mfrac> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           x 
         </mi> 
         <mo> 
         </mo> 
        </mrow> 
       </mfrac> 
       <mo>
         + 
       </mo> 
       <mi>
         α 
       </mi> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <msup> 
        <mrow> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <mfrac> 
            <mrow> 
             <mo>
               ∂ 
             </mo> 
             <mi>
               C 
             </mi> 
            </mrow> 
            <mrow> 
             <mo>
               ∂ 
             </mo> 
             <mi>
               x 
             </mi> 
            </mrow> 
           </mfrac> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
        </mrow> 
        <mn>
          2 
        </mn> 
       </msup> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <mo> 
       </mo> 
       <mfrac> 
        <mrow> 
         <msup> 
          <mo>
            ∂ 
          </mo> 
          <mn>
            2 
          </mn> 
         </msup> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <msup> 
          <mi>
            x 
          </mi> 
          <mn>
            2 
          </mn> 
         </msup> 
        </mrow> 
       </mfrac> 
       <mo>
         − 
       </mo> 
       <mi>
         α 
       </mi> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <mi>
         C 
       </mi> 
       <mfrac> 
        <mrow> 
         <msup> 
          <mo>
            ∂ 
          </mo> 
          <mn>
            2 
          </mn> 
         </msup> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <msup> 
          <mi>
            x 
          </mi> 
          <mn>
            2 
          </mn> 
         </msup> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> (6)</p>
    <p>Also, since 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         α 
       </mi> 
       <mi>
         C 
       </mi> 
      </mrow> 
     </math> and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         α 
       </mi> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
      </mrow> 
     </math> are small value compared to the leading transport terms, non linear term in Equation (6) such as 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         α 
       </mi> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <msup> 
        <mrow> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <mrow> 
            <mrow> 
             <mo>
               ∂ 
             </mo> 
             <mi>
               C 
             </mi> 
            </mrow> 
            <mo>
              / 
            </mo> 
            <mrow> 
             <mo>
               ∂ 
             </mo> 
             <mi>
               x 
             </mi> 
            </mrow> 
           </mrow> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
        </mrow> 
        <mn>
          2 
        </mn> 
       </msup> 
      </mrow> 
     </math> and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         α 
       </mi> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <mi>
         C 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mfrac> 
          <mrow> 
           <msup> 
            <mo>
              ∂ 
            </mo> 
            <mn>
              2 
            </mn> 
           </msup> 
           <mi>
             C 
           </mi> 
          </mrow> 
          <mrow> 
           <mo>
             ∂ 
           </mo> 
           <msup> 
            <mi>
              x 
            </mi> 
            <mn>
              2 
            </mn> 
           </msup> 
          </mrow> 
         </mfrac> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> can be neglected without effecting on the solution accuracy. By linearizing ADM Equation (6) can be simplified to:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <mfrac> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mo>
           ∂ 
         </mo> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <mfrac> 
        <mrow> 
         <msup> 
          <mtext>
            d 
          </mtext> 
          <mn>
            2 
          </mn> 
         </msup> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <msup> 
          <mi>
            x 
          </mi> 
          <mn>
            2 
          </mn> 
         </msup> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> (7)</p>
    <p>This linearization is based on the assumption of low solute concentrations and a weak coupling effect, meaning the nonlinear interaction terms are too small to effect on the transport behavior. Under these conditions, Equation (7) suggests a valid approximation. In our analysis, the parameter α &lt; 1, supports the weak coupling assumption. However, if α ≥ 1, the coupling becomes strong, and the nonlinear terms can no longer be neglected.</p>
   </sec>
   <sec id="s2_2">
    <title>2.2. Finite Element Method to Solve ADM</title>
    <p>
     <xref ref-type="bibr" rid="scirp.146543-"></xref>In this section, the ADM is first solved (using FEM with the stiffness approach) to obtain the solute concentration profiles and flux distributions along the RO membrane length. The results from this analysis describe how solutes move through the feed channel and are ultimately rejected at the membrane surface. This concentration profile acquired from ADM is used to calculate the osmotic pressure term in SDM.</p>
    <p>Finite Element Method (FEM) is the stiffness approach, and the stiffness matrix relates the nodal values of the unknown function to applied forces. The following is the general form:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mstyle mathvariant="bold" mathsize="normal"> 
        <mi>
          K 
        </mi> 
       </mstyle> 
       <mrow> 
        <mo>
          { 
        </mo> 
        <mi>
          C 
        </mi> 
        <mo>
          } 
        </mo> 
       </mrow> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          { 
        </mo> 
        <mi>
          F 
        </mi> 
        <mo>
          } 
        </mo> 
       </mrow> 
      </mrow> 
     </math> (8)</p>
    <p>
     <xref ref-type="bibr" rid="scirp.146543-"></xref>where K is the stiffness matrix that accounts for diffusion and advection effects, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mrow> 
        <mo>
          { 
        </mo> 
        <mi>
          C 
        </mi> 
        <mo>
          } 
        </mo> 
       </mrow> 
      </mrow> 
     </math> is the vector of unknown nodal values, and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mrow> 
        <mo>
          { 
        </mo> 
        <mi>
          F 
        </mi> 
        <mo>
          } 
        </mo> 
       </mrow> 
      </mrow> 
     </math> is the force vector that incorporates boundary conditions and source terms. For an N-node 1-D finite element mesh, the global stiffness matrix is assembled from local element matrices:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mstyle mathvariant="bold" mathsize="normal"> 
        <mi>
          K 
        </mi> 
       </mstyle> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          [ 
        </mo> 
        <mrow> 
         <mtable> 
          <mtr> 
           <mtd> 
            <mrow> 
             <msub> 
              <mi>
                K 
              </mi> 
              <mrow> 
               <mn>
                 11 
               </mn> 
              </mrow> 
             </msub> 
            </mrow> 
           </mtd> 
           <mtd> 
            <mrow> 
             <msub> 
              <mi>
                K 
              </mi> 
              <mrow> 
               <mn>
                 12 
               </mn> 
              </mrow> 
             </msub> 
            </mrow> 
           </mtd> 
           <mtd> 
            <mn>
              0 
            </mn> 
           </mtd> 
           <mtd> 
            <mo>
              ⋯ 
            </mo> 
           </mtd> 
           <mtd> 
            <mn>
              0 
            </mn> 
           </mtd> 
          </mtr> 
          <mtr> 
           <mtd> 
            <mrow> 
             <msub> 
              <mi>
                k 
              </mi> 
              <mrow> 
               <mn>
                 21 
               </mn> 
              </mrow> 
             </msub> 
            </mrow> 
           </mtd> 
           <mtd> 
            <mrow> 
             <msub> 
              <mi>
                K 
              </mi> 
              <mrow> 
               <mn>
                 22 
               </mn> 
              </mrow> 
             </msub> 
            </mrow> 
           </mtd> 
           <mtd> 
            <mrow> 
             <msub> 
              <mi>
                K 
              </mi> 
              <mrow> 
               <mn>
                 23 
               </mn> 
              </mrow> 
             </msub> 
            </mrow> 
           </mtd> 
           <mtd> 
            <mo>
              ⋯ 
            </mo> 
           </mtd> 
           <mtd> 
            <mn>
              0 
            </mn> 
           </mtd> 
          </mtr> 
          <mtr> 
           <mtd> 
            <mn>
              0 
            </mn> 
           </mtd> 
           <mtd> 
            <mrow> 
             <msub> 
              <mi>
                K 
              </mi> 
              <mrow> 
               <mn>
                 32 
               </mn> 
              </mrow> 
             </msub> 
            </mrow> 
           </mtd> 
           <mtd> 
            <mrow> 
             <msub> 
              <mi>
                K 
              </mi> 
              <mrow> 
               <mn>
                 33 
               </mn> 
              </mrow> 
             </msub> 
            </mrow> 
           </mtd> 
           <mtd> 
            <mo>
              ⋯ 
            </mo> 
           </mtd> 
           <mtd> 
            <mn>
              0 
            </mn> 
           </mtd> 
          </mtr> 
          <mtr> 
           <mtd> 
            <mo>
              ⋮ 
            </mo> 
           </mtd> 
           <mtd> 
            <mo>
              ⋮ 
            </mo> 
           </mtd> 
           <mtd> 
            <mo>
              ⋮ 
            </mo> 
           </mtd> 
           <mtd> 
            <mo>
              ⋯ 
            </mo> 
           </mtd> 
           <mtd> 
            <mrow> 
             <msub> 
              <mi>
                K 
              </mi> 
              <mrow> 
               <mi>
                 N 
               </mi> 
               <mo>
                 − 
               </mo> 
               <mn>
                 1 
               </mn> 
               <mo>
                 , 
               </mo> 
               <mi>
                 N 
               </mi> 
              </mrow> 
             </msub> 
            </mrow> 
           </mtd> 
          </mtr> 
          <mtr> 
           <mtd> 
            <mn>
              0 
            </mn> 
           </mtd> 
           <mtd> 
            <mn>
              0 
            </mn> 
           </mtd> 
           <mtd> 
            <mn>
              0 
            </mn> 
           </mtd> 
           <mtd> 
            <mrow> 
             <msub> 
              <mi>
                K 
              </mi> 
              <mrow> 
               <mi>
                 N 
               </mi> 
               <mo>
                 , 
               </mo> 
               <mi>
                 N 
               </mi> 
               <mo>
                 − 
               </mo> 
               <mn>
                 1 
               </mn> 
              </mrow> 
             </msub> 
            </mrow> 
           </mtd> 
           <mtd> 
            <mrow> 
             <msub> 
              <mi>
                K 
              </mi> 
              <mrow> 
               <mi>
                 N 
               </mi> 
               <mi>
                 N 
               </mi> 
              </mrow> 
             </msub> 
            </mrow> 
           </mtd> 
          </mtr> 
         </mtable> 
        </mrow> 
        <mo>
          ] 
        </mo> 
       </mrow> 
      </mrow> 
     </math> (9)</p>
    <p>
     <xref ref-type="bibr" rid="scirp.146543-"></xref>where matrix K represents the combined effects of diffusion and advection. It has contribution from both the diffusion term 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <mfrac> 
        <mrow> 
         <msup> 
          <mtext>
            d 
          </mtext> 
          <mn>
            2 
          </mn> 
         </msup> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <msup> 
          <mi>
            x 
          </mi> 
          <mn>
            2 
          </mn> 
         </msup> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> and the advection term 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <mfrac> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math>.</p>
    <p>To solve Equation (7) by FEM using the linear stiffness approach, we solve it over a domain 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mn>
         0 
       </mn> 
       <mo>
         &lt; 
       </mo> 
       <mi>
         x 
       </mi> 
       <mo>
         &lt; 
       </mo> 
       <msub> 
        <mi>
          L 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
      </mrow> 
     </math> and apply both the Neumann and Dirichlet boundary conditions, which mathematically can be represented as follows:</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mtable columnalign="left"> 
       <mtr> 
        <mtd> 
         <mtext>
           Dirichlet condition at 
         </mtext> 
         <mtext>
             
         </mtext> 
         <mi>
           x 
         </mi> 
         <mo>
           = 
         </mo> 
         <mn>
           0 
         </mn> 
         <mo>
           : 
         </mo> 
         <mi>
           C 
         </mi> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mn>
            0 
          </mn> 
          <mo>
            ) 
          </mo> 
         </mrow> 
         <mo>
           = 
         </mo> 
         <msub> 
          <mi>
            C 
          </mi> 
          <mi>
            o 
          </mi> 
         </msub> 
        </mtd> 
       </mtr> 
       <mtr> 
        <mtd> 
         <mtext>
           Neumann condition captures the zero flux at 
         </mtext> 
         <mtext>
             
         </mtext> 
         <mi>
           x 
         </mi> 
         <mo>
           = 
         </mo> 
         <mi>
           L 
         </mi> 
         <mo>
           : 
         </mo> 
         <msub> 
          <mrow> 
           <mrow> 
            <mfrac> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <mi>
                C 
              </mi> 
             </mrow> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <mi>
                x 
              </mi> 
             </mrow> 
            </mfrac> 
           </mrow> 
           <mo>
             | 
           </mo> 
          </mrow> 
          <mrow> 
           <mi>
             x 
           </mi> 
           <mo>
             = 
           </mo> 
           <mi>
             L 
           </mi> 
          </mrow> 
         </msub> 
         <mo>
           ≈ 
         </mo> 
         <mn>
           0 
         </mn> 
        </mtd> 
       </mtr> 
      </mtable> 
     </math> (10)</p>
    <p>To minimize the residual error across the domain, the strong form is converted into a weak form <xref ref-type="bibr" rid="scirp.146543-17">
      [17]
     </xref>. That is, both sides of Equation (7) is multiplied by a test function 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ϕ 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math>. We assume two nodes, and integrate over the domain 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mn>
         0 
       </mn> 
       <mo>
         &lt; 
       </mo> 
       <mi>
         x 
       </mi> 
       <mo>
         &lt; 
       </mo> 
       <msub> 
        <mi>
          L 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
      </mrow> 
     </math>, the following is obtained:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mstyle displaystyle="true"> 
        <mrow> 
         <msubsup> 
          <mo>
            ∫ 
          </mo> 
          <mn>
            0 
          </mn> 
          <mi>
            L 
          </mi> 
         </msubsup> 
         <mrow> 
          <mi>
            v 
          </mi> 
          <mfrac> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <mi>
              C 
            </mi> 
           </mrow> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <mi>
              χ 
            </mi> 
           </mrow> 
          </mfrac> 
          <msub> 
           <mi>
             ϕ 
           </mi> 
           <mi>
             i 
           </mi> 
          </msub> 
          <mo> 
          </mo> 
          <mtext>
            d 
          </mtext> 
          <mi>
            x 
          </mi> 
         </mrow> 
        </mrow> 
       </mstyle> 
       <mo>
         = 
       </mo> 
       <mstyle displaystyle="true"> 
        <mrow> 
         <msubsup> 
          <mo>
            ∫ 
          </mo> 
          <mn>
            0 
          </mn> 
          <mi>
            L 
          </mi> 
         </msubsup> 
         <mrow> 
          <msub> 
           <mi>
             D 
           </mi> 
           <mn>
             0 
           </mn> 
          </msub> 
          <mfrac> 
           <mrow> 
            <msup> 
             <mtext>
               d 
             </mtext> 
             <mn>
               2 
             </mn> 
            </msup> 
            <mi>
              C 
            </mi> 
           </mrow> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <msup> 
             <mi>
               χ 
             </mi> 
             <mn>
               2 
             </mn> 
            </msup> 
           </mrow> 
          </mfrac> 
          <msub> 
           <mi>
             ϕ 
           </mi> 
           <mi>
             i 
           </mi> 
          </msub> 
          <mtext>
            d 
          </mtext> 
          <mi>
            x 
          </mi> 
         </mrow> 
        </mrow> 
       </mstyle> 
      </mrow> 
     </math> (11)</p>
    <p>Solving the diffusion term in Equation (11), by integration by parts, and applying Neumann condition in Equation (10), the weak form can be written as follow:</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mstyle displaystyle="true"> 
        <mrow> 
         <msubsup> 
          <mo>
            ∫ 
          </mo> 
          <mn>
            0 
          </mn> 
          <mi>
            L 
          </mi> 
         </msubsup> 
         <mrow> 
          <mi>
            v 
          </mi> 
          <mfrac> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <mi>
              C 
            </mi> 
           </mrow> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <mi>
              χ 
            </mi> 
           </mrow> 
          </mfrac> 
          <msub> 
           <mi>
             ϕ 
           </mi> 
           <mi>
             i 
           </mi> 
          </msub> 
          <mtext>
            d 
          </mtext> 
          <mi>
            x 
          </mi> 
         </mrow> 
        </mrow> 
       </mstyle> 
       <mo>
         = 
       </mo> 
       <mstyle displaystyle="true"> 
        <mrow> 
         <msubsup> 
          <mo>
            ∫ 
          </mo> 
          <mn>
            0 
          </mn> 
          <mi>
            L 
          </mi> 
         </msubsup> 
         <mrow> 
          <msub> 
           <mi>
             D 
           </mi> 
           <mn>
             0 
           </mn> 
          </msub> 
          <mfrac> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <mi>
              C 
            </mi> 
           </mrow> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <mi>
              x 
            </mi> 
           </mrow> 
          </mfrac> 
          <mfrac> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <msub> 
             <mi>
               ϕ 
             </mi> 
             <mi>
               i 
             </mi> 
            </msub> 
           </mrow> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <mi>
              x 
            </mi> 
           </mrow> 
          </mfrac> 
          <mtext>
            d 
          </mtext> 
          <mi>
            x 
          </mi> 
         </mrow> 
        </mrow> 
       </mstyle> 
      </mrow> 
     </math> (12)</p>
    <p>Also 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         C 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> is approximated using shape functions as follow:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         C 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mn>
          1 
        </mn> 
       </msub> 
       <msub> 
        <mi>
          ϕ 
        </mi> 
        <mn>
          1 
        </mn> 
       </msub> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         + 
       </mo> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mn>
          2 
        </mn> 
       </msub> 
       <msub> 
        <mi>
          ϕ 
        </mi> 
        <mn>
          2 
        </mn> 
       </msub> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo> 
       </mo> 
      </mrow> 
     </math> (13)</p>
    <p>The derivative of Equation (13) is given by,</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mfrac> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mn>
          1 
        </mn> 
       </msub> 
       <mfrac> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <msub> 
          <mi>
            ϕ 
          </mi> 
          <mn>
            1 
          </mn> 
         </msub> 
        </mrow> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         + 
       </mo> 
       <mo> 
       </mo> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mn>
          2 
        </mn> 
       </msub> 
       <mfrac> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <msub> 
          <mi>
            ϕ 
          </mi> 
          <mn>
            2 
          </mn> 
         </msub> 
        </mrow> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> (14)</p>
    <p>For a linear shape function:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mfrac> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mn>
          1 
        </mn> 
       </msub> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mo>
           − 
         </mo> 
         <mfrac> 
          <mn>
            1 
          </mn> 
          <mrow> 
           <mi>
             Δ 
           </mi> 
           <mi>
             x 
           </mi> 
          </mrow> 
         </mfrac> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         + 
       </mo> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mn>
          2 
        </mn> 
       </msub> 
       <mfrac> 
        <mn>
          1 
        </mn> 
        <mrow> 
         <mi>
           Δ 
         </mi> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> (15)</p>
    <p>where 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         Δ 
       </mi> 
       <mi>
         x 
       </mi> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          x 
        </mi> 
        <mn>
          2 
        </mn> 
       </msub> 
       <mo>
         − 
       </mo> 
       <msub> 
        <mi>
          x 
        </mi> 
        <mn>
          1 
        </mn> 
       </msub> 
      </mrow> 
     </math>.</p>
    <p>Now substitute 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         C 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mfrac> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           C 
         </mi> 
        </mrow> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> into Equation (12), it can be rewritten as follows:</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mstyle displaystyle="true"> 
        <mrow> 
         <msubsup> 
          <mo>
            ∫ 
          </mo> 
          <mn>
            0 
          </mn> 
          <mi>
            L 
          </mi> 
         </msubsup> 
         <mrow> 
          <mi>
            v 
          </mi> 
          <mrow> 
           <mo>
             ( 
           </mo> 
           <mrow> 
            <msub> 
             <mi>
               C 
             </mi> 
             <mn>
               1 
             </mn> 
            </msub> 
            <mfrac> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <msub> 
               <mi>
                 ϕ 
               </mi> 
               <mn>
                 1 
               </mn> 
              </msub> 
             </mrow> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <mi>
                x 
              </mi> 
             </mrow> 
            </mfrac> 
            <mo>
              + 
            </mo> 
            <msub> 
             <mi>
               C 
             </mi> 
             <mn>
               2 
             </mn> 
            </msub> 
            <mfrac> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <msub> 
               <mi>
                 ϕ 
               </mi> 
               <mn>
                 2 
               </mn> 
              </msub> 
             </mrow> 
             <mrow> 
              <mi>
                d 
              </mi> 
              <mi>
                x 
              </mi> 
             </mrow> 
            </mfrac> 
           </mrow> 
           <mo>
             ) 
           </mo> 
          </mrow> 
          <msub> 
           <mi>
             ϕ 
           </mi> 
           <mi>
             i 
           </mi> 
          </msub> 
          <mtext>
            d 
          </mtext> 
          <mi>
            x 
          </mi> 
         </mrow> 
        </mrow> 
       </mstyle> 
       <mo>
         = 
       </mo> 
       <mstyle displaystyle="true"> 
        <mrow> 
         <msubsup> 
          <mo>
            ∫ 
          </mo> 
          <mn>
            0 
          </mn> 
          <mi>
            L 
          </mi> 
         </msubsup> 
         <mrow> 
          <msub> 
           <mi>
             D 
           </mi> 
           <mn>
             0 
           </mn> 
          </msub> 
          <mrow> 
           <mo>
             ( 
           </mo> 
           <mrow> 
            <msub> 
             <mi>
               C 
             </mi> 
             <mn>
               1 
             </mn> 
            </msub> 
            <mfrac> 
             <mrow> 
              <mi>
                d 
              </mi> 
              <msub> 
               <mi>
                 ϕ 
               </mi> 
               <mn>
                 1 
               </mn> 
              </msub> 
             </mrow> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <mi>
                x 
              </mi> 
             </mrow> 
            </mfrac> 
            <mo>
              + 
            </mo> 
            <msub> 
             <mi>
               C 
             </mi> 
             <mn>
               2 
             </mn> 
            </msub> 
            <mfrac> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <msub> 
               <mi>
                 ϕ 
               </mi> 
               <mn>
                 2 
               </mn> 
              </msub> 
             </mrow> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <mi>
                x 
              </mi> 
             </mrow> 
            </mfrac> 
           </mrow> 
           <mo>
             ) 
           </mo> 
          </mrow> 
          <mfrac> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <msub> 
             <mi>
               ϕ 
             </mi> 
             <mrow> 
              <mi>
                i 
              </mi> 
              <mo> 
              </mo> 
             </mrow> 
            </msub> 
           </mrow> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <mi>
              x 
            </mi> 
           </mrow> 
          </mfrac> 
          <mtext>
            d 
          </mtext> 
          <mi>
            x 
          </mi> 
         </mrow> 
        </mrow> 
       </mstyle> 
      </mrow> 
     </math> (16)</p>
    <p>This leads to the final element stiffness matrix to the following:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          K 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mstyle displaystyle="true"> 
        <mrow> 
         <msubsup> 
          <mo>
            ∫ 
          </mo> 
          <mrow> 
           <msub> 
            <mi>
              x 
            </mi> 
            <mi>
              i 
            </mi> 
           </msub> 
          </mrow> 
          <mrow> 
           <msub> 
            <mi>
              x 
            </mi> 
            <mi>
              j 
            </mi> 
           </msub> 
          </mrow> 
         </msubsup> 
         <mrow> 
          <mrow> 
           <mo>
             ( 
           </mo> 
           <mrow> 
            <msub> 
             <mi>
               D 
             </mi> 
             <mn>
               0 
             </mn> 
            </msub> 
            <mfrac> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <msub> 
               <mi>
                 ϕ 
               </mi> 
               <mi>
                 i 
               </mi> 
              </msub> 
             </mrow> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <mi>
                x 
              </mi> 
             </mrow> 
            </mfrac> 
            <mfrac> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <msub> 
               <mi>
                 ϕ 
               </mi> 
               <mi>
                 j 
               </mi> 
              </msub> 
             </mrow> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <mi>
                x 
              </mi> 
             </mrow> 
            </mfrac> 
            <mo>
              + 
            </mo> 
            <mi>
              v 
            </mi> 
            <msub> 
             <mi>
               ϕ 
             </mi> 
             <mi>
               i 
             </mi> 
            </msub> 
            <mfrac> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <msub> 
               <mi>
                 ϕ 
               </mi> 
               <mi>
                 j 
               </mi> 
              </msub> 
             </mrow> 
             <mrow> 
              <mtext>
                d 
              </mtext> 
              <mi>
                x 
              </mi> 
             </mrow> 
            </mfrac> 
           </mrow> 
           <mo>
             ) 
           </mo> 
          </mrow> 
          <mtext>
            d 
          </mtext> 
          <mi>
            x 
          </mi> 
         </mrow> 
        </mrow> 
       </mstyle> 
      </mrow> 
     </math> (17)</p>
    <p>The linear shape functions for a two-node element are <xref ref-type="bibr" rid="scirp.146543-18">
      [18]
     </xref>:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ϕ 
        </mi> 
        <mn>
          1 
        </mn> 
       </msub> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         = 
       </mo> 
       <mfrac> 
        <mrow> 
         <msub> 
          <mi>
            x 
          </mi> 
          <mn>
            2 
          </mn> 
         </msub> 
         <mo>
           − 
         </mo> 
         <mi>
           x 
         </mi> 
        </mrow> 
        <mrow> 
         <mi>
           Δ 
         </mi> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         , 
       </mo> 
       <mtext>
           
       </mtext> 
       <mtext>
           
       </mtext> 
       <msub> 
        <mi>
          ϕ 
        </mi> 
        <mn>
          2 
        </mn> 
       </msub> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         = 
       </mo> 
       <mfrac> 
        <mrow> 
         <mi>
           x 
         </mi> 
         <mo>
           − 
         </mo> 
         <msub> 
          <mi>
            x 
          </mi> 
          <mn>
            1 
          </mn> 
         </msub> 
        </mrow> 
        <mrow> 
         <mi>
           Δ 
         </mi> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> (18)</p>
    <p>where 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         Δ 
       </mi> 
       <mi>
         x 
       </mi> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          x 
        </mi> 
        <mn>
          2 
        </mn> 
       </msub> 
       <mo>
         − 
       </mo> 
       <msub> 
        <mi>
          x 
        </mi> 
        <mn>
          1 
        </mn> 
       </msub> 
      </mrow> 
     </math> is the element length. By taking the derivative of Equation (18), it can be represented as follows:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ϕ 
        </mi> 
        <mn>
          1 
        </mn> 
       </msub> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         = 
       </mo> 
       <mo>
         − 
       </mo> 
       <mfrac> 
        <mn>
          1 
        </mn> 
        <mrow> 
         <mi>
           Δ 
         </mi> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         , 
       </mo> 
       <mtext>
           
       </mtext> 
       <mtext>
           
       </mtext> 
       <msub> 
        <mi>
          ϕ 
        </mi> 
        <mn>
          2 
        </mn> 
       </msub> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         = 
       </mo> 
       <mfrac> 
        <mn>
          1 
        </mn> 
        <mrow> 
         <mi>
           Δ 
         </mi> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> (19)</p>
    <p>Substituting the shape function derivative (Equation (19)) into the diffusion term in Equation (16), it will give the following:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mstyle displaystyle="true"> 
        <mrow> 
         <msubsup> 
          <mo>
            ∫ 
          </mo> 
          <mrow> 
           <msub> 
            <mi>
              x 
            </mi> 
            <mi>
              i 
            </mi> 
           </msub> 
          </mrow> 
          <mrow> 
           <msub> 
            <mi>
              x 
            </mi> 
            <mi>
              j 
            </mi> 
           </msub> 
          </mrow> 
         </msubsup> 
         <mrow> 
          <msub> 
           <mi>
             D 
           </mi> 
           <mn>
             0 
           </mn> 
          </msub> 
          <mrow> 
           <mo>
             ( 
           </mo> 
           <mrow> 
            <mfrac> 
             <mn>
               1 
             </mn> 
             <mrow> 
              <mi>
                Δ 
              </mi> 
              <mi>
                x 
              </mi> 
             </mrow> 
            </mfrac> 
            <mfrac> 
             <mn>
               1 
             </mn> 
             <mrow> 
              <mi>
                Δ 
              </mi> 
              <mi>
                x 
              </mi> 
             </mrow> 
            </mfrac> 
            <mtext>
              d 
            </mtext> 
            <mi>
              x 
            </mi> 
           </mrow> 
           <mo>
             ) 
           </mo> 
          </mrow> 
         </mrow> 
        </mrow> 
       </mstyle> 
       <mo>
         = 
       </mo> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <mfrac> 
        <mn>
          1 
        </mn> 
        <mrow> 
         <mi>
           Δ 
         </mi> 
         <msup> 
          <mi>
            x 
          </mi> 
          <mn>
            2 
          </mn> 
         </msup> 
        </mrow> 
       </mfrac> 
       <mstyle displaystyle="true"> 
        <mrow> 
         <msubsup> 
          <mo>
            ∫ 
          </mo> 
          <mrow> 
           <msub> 
            <mi>
              x 
            </mi> 
            <mi>
              i 
            </mi> 
           </msub> 
          </mrow> 
          <mrow> 
           <msub> 
            <mi>
              x 
            </mi> 
            <mi>
              j 
            </mi> 
           </msub> 
          </mrow> 
         </msubsup> 
         <mrow> 
          <mtext>
            d 
          </mtext> 
          <mi>
            x 
          </mi> 
         </mrow> 
        </mrow> 
       </mstyle> 
      </mrow> 
     </math> (20)</p>
    <p>Since the integral evaluates to 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         Δ 
       </mi> 
       <mi>
         x 
       </mi> 
      </mrow> 
     </math>:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mn>
          0 
        </mn> 
       </msub> 
       <mfrac> 
        <mn>
          1 
        </mn> 
        <mrow> 
         <mi>
           Δ 
         </mi> 
         <msup> 
          <mi>
            x 
          </mi> 
          <mn>
            2 
          </mn> 
         </msup> 
        </mrow> 
       </mfrac> 
       <mo>
         × 
       </mo> 
       <mi>
         Δ 
       </mi> 
       <mi>
         x 
       </mi> 
       <mo>
         = 
       </mo> 
       <mfrac> 
        <mrow> 
         <msub> 
          <mi>
            D 
          </mi> 
          <mn>
            0 
          </mn> 
         </msub> 
         <mo> 
         </mo> 
        </mrow> 
        <mrow> 
         <mi>
           Δ 
         </mi> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> (21)</p>
    <p>Thus, for elements stiffness, we have</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msubsup> 
        <mi>
          K 
        </mi> 
        <mrow> 
         <mn>
           11 
         </mn> 
        </mrow> 
        <mrow> 
         <mtext>
           diffusion 
         </mtext> 
        </mrow> 
       </msubsup> 
       <mo>
         = 
       </mo> 
       <msubsup> 
        <mi>
          K 
        </mi> 
        <mrow> 
         <mn>
           22 
         </mn> 
        </mrow> 
        <mrow> 
         <mtext>
           diffusion 
         </mtext> 
        </mrow> 
       </msubsup> 
       <mo>
         = 
       </mo> 
       <mfrac> 
        <mrow> 
         <msub> 
          <mi>
            D 
          </mi> 
          <mn>
            0 
          </mn> 
         </msub> 
         <mo> 
         </mo> 
        </mrow> 
        <mrow> 
         <mi>
           Δ 
         </mi> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
       <mo>
         , 
       </mo> 
       <mtext>
           
       </mtext> 
       <mtext>
           
       </mtext> 
       <msubsup> 
        <mi>
          K 
        </mi> 
        <mrow> 
         <mn>
           12 
         </mn> 
        </mrow> 
        <mrow> 
         <mtext>
           diffusion 
         </mtext> 
        </mrow> 
       </msubsup> 
       <mo>
         = 
       </mo> 
       <msubsup> 
        <mi>
          K 
        </mi> 
        <mrow> 
         <mn>
           21 
         </mn> 
        </mrow> 
        <mrow> 
         <mtext>
           diffusion 
         </mtext> 
        </mrow> 
       </msubsup> 
       <mo>
         = 
       </mo> 
       <mo>
         − 
       </mo> 
       <mfrac> 
        <mrow> 
         <msub> 
          <mi>
            D 
          </mi> 
          <mn>
            0 
          </mn> 
         </msub> 
         <mo> 
         </mo> 
        </mrow> 
        <mrow> 
         <mi>
           Δ 
         </mi> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math></p>
    <p>Since the advection terms contain one linear function and one constant derivative, the integral of a linear function over an element gives a factor of 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mfrac> 
        <mn>
          1 
        </mn> 
        <mn>
          2 
        </mn> 
       </mfrac> 
      </mrow> 
     </math>, thus the advection form in Equation (17) can be evaluated as follows:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mstyle displaystyle="true"> 
        <mrow> 
         <msubsup> 
          <mo>
            ∫ 
          </mo> 
          <mrow> 
           <msub> 
            <mi>
              x 
            </mi> 
            <mn>
              1 
            </mn> 
           </msub> 
          </mrow> 
          <mrow> 
           <msub> 
            <mi>
              x 
            </mi> 
            <mn>
              2 
            </mn> 
           </msub> 
          </mrow> 
         </msubsup> 
         <mrow> 
          <mi>
            v 
          </mi> 
          <msub> 
           <mi>
             ϕ 
           </mi> 
           <mn>
             1 
           </mn> 
          </msub> 
          <mfrac> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <msub> 
             <mi>
               ϕ 
             </mi> 
             <mn>
               1 
             </mn> 
            </msub> 
           </mrow> 
           <mrow> 
            <mtext>
              d 
            </mtext> 
            <mi>
              x 
            </mi> 
           </mrow> 
          </mfrac> 
          <mtext>
            d 
          </mtext> 
          <mi>
            x 
          </mi> 
         </mrow> 
        </mrow> 
       </mstyle> 
       <mo>
         ≈ 
       </mo> 
       <mi>
         v 
       </mi> 
       <mo>
         × 
       </mo> 
       <mfrac> 
        <mn>
          1 
        </mn> 
        <mn>
          2 
        </mn> 
       </mfrac> 
      </mrow> 
     </math> (22)</p>
    <p>This result in:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msubsup> 
        <mi>
          K 
        </mi> 
        <mrow> 
         <mn>
           11 
         </mn> 
        </mrow> 
        <mrow> 
         <mtext>
           advection 
         </mtext> 
        </mrow> 
       </msubsup> 
       <mo>
         = 
       </mo> 
       <mfrac> 
        <mi>
          v 
        </mi> 
        <mn>
          2 
        </mn> 
       </mfrac> 
      </mrow> 
     </math>,</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msubsup> 
        <mi>
          K 
        </mi> 
        <mrow> 
         <mn>
           22 
         </mn> 
        </mrow> 
        <mrow> 
         <mtext>
           advection 
         </mtext> 
        </mrow> 
       </msubsup> 
       <mo>
         = 
       </mo> 
       <mo>
         − 
       </mo> 
       <mfrac> 
        <mi>
          v 
        </mi> 
        <mn>
          2 
        </mn> 
       </mfrac> 
      </mrow> 
     </math>,</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msubsup> 
        <mi>
          K 
        </mi> 
        <mrow> 
         <mn>
           12 
         </mn> 
        </mrow> 
        <mrow> 
         <mtext>
           advection 
         </mtext> 
        </mrow> 
       </msubsup> 
       <mo>
         = 
       </mo> 
       <mo>
         − 
       </mo> 
       <mfrac> 
        <mi>
          v 
        </mi> 
        <mn>
          2 
        </mn> 
       </mfrac> 
      </mrow> 
     </math>,</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msubsup> 
        <mi>
          K 
        </mi> 
        <mrow> 
         <mn>
           21 
         </mn> 
        </mrow> 
        <mrow> 
         <mtext>
           advection 
         </mtext> 
        </mrow> 
       </msubsup> 
       <mo>
         = 
       </mo> 
       <mfrac> 
        <mi>
          v 
        </mi> 
        <mn>
          2 
        </mn> 
       </mfrac> 
      </mrow> 
     </math></p>
    <p>Adding the diffusion and advection contributions, the stiffness of two nodes can be represented as follows:</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          K 
        </mi> 
        <mi>
          e 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          [ 
        </mo> 
        <mrow> 
         <mtable> 
          <mtr> 
           <mtd> 
            <mrow> 
             <mfrac> 
              <mrow> 
               <msub> 
                <mi>
                  D 
                </mi> 
                <mn>
                  0 
                </mn> 
               </msub> 
              </mrow> 
              <mrow> 
               <mi>
                 Δ 
               </mi> 
               <mi>
                 x 
               </mi> 
              </mrow> 
             </mfrac> 
             <mo>
               + 
             </mo> 
             <mfrac> 
              <mi>
                v 
              </mi> 
              <mn>
                2 
              </mn> 
             </mfrac> 
            </mrow> 
           </mtd> 
           <mtd> 
            <mrow> 
             <mo>
               − 
             </mo> 
             <mfrac> 
              <mrow> 
               <msub> 
                <mi>
                  D 
                </mi> 
                <mn>
                  0 
                </mn> 
               </msub> 
              </mrow> 
              <mrow> 
               <mi>
                 Δ 
               </mi> 
               <mi>
                 x 
               </mi> 
              </mrow> 
             </mfrac> 
             <mo>
               − 
             </mo> 
             <mfrac> 
              <mi>
                v 
              </mi> 
              <mn>
                2 
              </mn> 
             </mfrac> 
            </mrow> 
           </mtd> 
          </mtr> 
          <mtr> 
           <mtd> 
            <mrow> 
             <mo>
               − 
             </mo> 
             <mfrac> 
              <mrow> 
               <msub> 
                <mi>
                  D 
                </mi> 
                <mn>
                  0 
                </mn> 
               </msub> 
              </mrow> 
              <mrow> 
               <mi>
                 Δ 
               </mi> 
               <mi>
                 x 
               </mi> 
              </mrow> 
             </mfrac> 
             <mo>
               + 
             </mo> 
             <mfrac> 
              <mi>
                v 
              </mi> 
              <mn>
                2 
              </mn> 
             </mfrac> 
            </mrow> 
           </mtd> 
           <mtd> 
            <mrow> 
             <mfrac> 
              <mrow> 
               <msub> 
                <mi>
                  D 
                </mi> 
                <mn>
                  0 
                </mn> 
               </msub> 
              </mrow> 
              <mrow> 
               <mi>
                 Δ 
               </mi> 
               <mi>
                 x 
               </mi> 
              </mrow> 
             </mfrac> 
             <mo>
               − 
             </mo> 
             <mfrac> 
              <mi>
                v 
              </mi> 
              <mn>
                2 
              </mn> 
             </mfrac> 
            </mrow> 
           </mtd> 
          </mtr> 
         </mtable> 
        </mrow> 
        <mo>
          ] 
        </mo> 
       </mrow> 
      </mrow> 
     </math> (23)</p>
    <p>The discretization is applied along the membrane’s length, which is 0.356 meters. The domain is divided into N = 50, 100, 500, and 1000 mesh elements, respectively. As shown in <xref ref-type="fig" rid="fig1">
      Figure 1
     </xref>, the membrane is treated as a sheet and meshed into uniform triangular elements. Since transport occurs within the membrane, it is modeled as a 2-D field divided into equal triangular grids. FEM is then used to solve for the permeate concentration based on Equation (7). This is followed by calculating the solvent flux using SDM, and finally, the transmembrane pressure is determined from the SDM’s solvent equation.</p>
    <fig id="fig1" position="float">
     <label>Figure 1</label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 1. Membrane flat sheet divided up to uniform triangle mechs.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId169.jpeg?20251105034406" />
    </fig>
    <p>The stiffness matrix represents the stiffness of an individual finite element in the mesh <xref ref-type="bibr" rid="scirp.146543-19">
      [19]
     </xref>. In our analysis it is a correlation between the forces imposed on the solute transport and displacement at the nodes in the systems. To initialize the stiffness matrix in MATLAB, we create a global matrix of size (N + 1) × (N + 1). In FEM, Equation (7) is approximated by a system of algebraic equation using polynomial approximation over a number of elements.</p>
    <p>To solve those algebraic equations, we need to assemble the stiffness matrix in Equation (8). The process iterates through each element in the mesh, starting from 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         i 
       </mi> 
       <mo>
         = 
       </mo> 
       <mn>
         1 
       </mn> 
      </mrow> 
     </math> to the total number of the elements, as seen in <xref ref-type="fig" rid="fig2">
      Figure 2
     </xref>. The element length, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mtext>
         d 
       </mtext> 
       <mi>
         x 
       </mi> 
      </mrow> 
     </math>, is calculated as the distance between nodes 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        i 
      </mi> 
     </math> and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         i 
       </mi> 
       <mo>
         + 
       </mo> 
       <mn>
         1 
       </mn> 
      </mrow> 
     </math>, and it defines the spatial step size used in the FEM. A diffusivity value is then selected from the predefined matrix 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        D 
      </mi> 
     </math>. Next, the local stiffness matrix ( 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          K 
        </mi> 
        <mi>
          e 
        </mi> 
       </msub> 
      </mrow> 
     </math>) is assembled using Equation (23) and added to the corresponding section of the global stiffness matrix 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        K 
      </mi> 
     </math>. After that, the local mass matrix is assembled, which accounts for the time accumulation effects in each element. This local mass matrix is then added to the global mass matrix M <xref ref-type="bibr" rid="scirp.146543-20">
      [20]
     </xref>.</p>
    <p>The loop index 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        i 
      </mi> 
     </math> is incremented, and the process repeats for the next element. Once all elements have been processed, the global matrices K and M are fully assembled and ready to be used in solving the FEM system of equations. We loop over the nodes, compute the integrals over the nodes and then solve for the linear system to calculate for the overall permeate solute flux, as illustrated in <xref ref-type="fig" rid="fig2">
      Figure 2
     </xref>. In this analysis, we find the values of solute concentrations at the nodes of the finite element mesh and then interpolate the concentration profile across the domain of the ADM, as shown in <xref ref-type="fig" rid="fig3">
      Figure 3
     </xref>. Finally, To verify the accuracy and reliability of the solution, the ADM and SDM data are compared with the experimental findings.</p>
    <fig id="fig2" position="float">
     <label>Figure 2</label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 2. Flowchart for solving the stiffness matrices in ADM (N = 100).</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId186.jpeg?20251105034405" />
    </fig>
    <fig id="fig3" position="float">
     <label>Figure 3</label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 3. Flowchart for solving the ADM using FEM with the stiffness approach (N = 100).</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId187.jpeg?20251105034405" />
    </fig>
    <p>
     <xref ref-type="bibr" rid="scirp.146543-"></xref>By performing the analysis mentioned previously, ADM captures the solute-side transport dynamics, while SDM captures the solvent-side flow driven by osmotic gradients.</p>
   </sec>
   <sec id="s2_3">
    <title>2.3. COMSOL Multiphysics for Solving ADM</title>
    <p>In Section 2.1, we have explained how ADM can be solved using FEM through the stiffness matrix approach. In this section, we take a different approach by using Computational Fluid Dynamics (CFD) in COMSOL Multiphysics to analyze and obtain the concentration profile.</p>
    <p>To begin with, the model geometry is divided into three separate rectangular sections, each representing a specific region: the feed, the active membrane (transport zone), and the permeate side. These sections are modeled as solid rectangular sheets. The dimensions for each region are illustrated in <xref ref-type="fig" rid="fig4">
      Figure 4
     </xref> and the values are given in <xref ref-type="table" rid="table2">
      Table 2
     </xref>.</p>
    <fig id="fig4" position="float">
     <label>Figure 4</label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 4. Membrane geometry in COMSOL multiphysics.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId188.jpeg?20251105034407" />
    </fig>
    <table-wrap id="table2">
     <label>
      <xref ref-type="table" rid="table2">
       Table 2
      </xref></label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Table 2. Geometric dimensions and offsets of RO membrane regions.</title>
     </caption>
     <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <td class="custom-bottom-td acenter" width="40.94%"><p style="text-align:center">Region</p></td> 
       <td class="custom-bottom-td acenter" width="19.69%"><p style="text-align:center">Width (m)</p></td> 
       <td class="custom-bottom-td acenter" width="19.69%"><p style="text-align:center">Height (m)</p></td> 
       <td class="custom-bottom-td acenter" width="19.69%"><p style="text-align:center">Offset (m)</p></td> 
      </tr> 
      <tr> 
       <td class="custom-top-td acenter" width="40.94%"><p style="text-align:center">Feed</p></td> 
       <td class="custom-top-td acenter" width="19.69%"><p style="text-align:center">0.0508</p></td> 
       <td class="custom-top-td acenter" width="19.69%"><p style="text-align:center">0.254</p></td> 
       <td class="custom-top-td acenter" width="19.69%"><p style="text-align:center">0</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="40.94%"><p style="text-align:center">Membrane (active transport area)</p></td> 
       <td class="acenter" width="19.69%"><p style="text-align:center">0.0254</p></td> 
       <td class="acenter" width="19.69%"><p style="text-align:center">0.254</p></td> 
       <td class="acenter" width="19.69%"><p style="text-align:center">0.0508</p></td> 
      </tr> 
      <tr> 
       <td class="acenter" width="40.94%"><p style="text-align:center">Permeate</p></td> 
       <td class="acenter" width="19.69%"><p style="text-align:center">0.0508</p></td> 
       <td class="acenter" width="19.69%"><p style="text-align:center">0.254</p></td> 
       <td class="acenter" width="19.69%"><p style="text-align:center">0.0762</p></td> 
      </tr> 
     </table>
    </table-wrap>
    <p>The material properties are then defined using seawater for the feed region, which has a given dynamic density and viscosity. Then, under Material Transport, two physics modules are added:</p>
    <p>1) Diluted species transport, accounting for convective transport mechanisms.</p>
    <p>2) Laminar Flow, considering steady-state fluid behavior.</p>
    <p>In the diluted species transport physics, the velocity field is specified to incorporate convective transport of solutes across the RO membrane. The diffusion coefficient for the membrane region is set to 1 × 10<sup>−</sup><sup>6</sup> m<sup>2</sup>/s, and for the feed region, it is larger, at 1 × 10<sup>−</sup><sup>5</sup> m<sup>2</sup>/s.</p>
    <p>The initial concentration at the feed inlet boundary ( 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         x 
       </mi> 
       <mo>
         = 
       </mo> 
       <mn>
         0 
       </mn> 
      </mrow> 
     </math>) is set to match the conditions previously used in the FEM model. At the membrane outlet boundary ( 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         x 
       </mi> 
       <mo>
         = 
       </mo> 
       <mi>
         L 
       </mi> 
      </mrow> 
     </math>) the solute flux is assumed to be zero, as described by Equation (10). A partition condition of 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          K 
        </mi> 
        <mi>
          c 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mn>
         1 
       </mn> 
      </mrow> 
     </math> is applied, indicating that the solute concentration remains continuous across the membrane interface, with no additional partitioning effects. In the laminar flow physics, an inlet velocity of 0.01 m/s is set. Also, the outlet flow condition incorporating osmotic pressure effects.</p>
    <p>A finer mesh is created to match the resolution used in the earlier MATLAB simulations, as shown in <xref ref-type="fig" rid="fig5">
      Figure 5
     </xref>. The concentration profile is then extracted along the active boundary to evaluate the interface behavior <xref ref-type="bibr" rid="scirp.146543-21">
      [21]
     </xref>.</p>
    <fig id="fig5" position="float">
     <label>Figure 5</label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 5. Finite element mesh of the RO membrane geometry in COMSOL.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId195.jpeg?20251105034406" />
    </fig>
   </sec>
  </sec><sec id="s3">
   <title>3. Results from the FEM Stiffness Method</title>
   <sec id="s3_1">
    <title>3.1. Concentration and Flux Profiles along the Membrane Length</title>
    <p>
     <xref ref-type="fig" rid="fig6">
      Figure 6
     </xref> displays the concentration and flux behavior along the membrane length during solute transport at n = 100 based on the ADM in Equation (7). This analysis is important because separating between diffusive and advective fluxes along 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        x 
      </mi> 
     </math> which reveals the dominant transport mechanism that drives solute and solvent inside the RO membrane.</p>
    <p>In <xref ref-type="fig" rid="fig6">
      Figure 6
     </xref>, the blue dashed line represents the solute concentration 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         C 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>, which starts high near the feed side (at 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         x 
       </mi> 
       <mo>
         = 
       </mo> 
       <mn>
         0 
       </mn> 
      </mrow> 
     </math>) and rapidly declines along the membrane, indicating strong solute rejection and minimal penetration through the membrane. The diffusive flux (brown dashed line) and advective flux (yellow dashed line) reaches the highest near the inlet and diminish quickly, showing that most of the transport activity occurs within a short region near the membrane surface. Along the membrane, the green dashed line, which represents the total flux or the sum of diffusion and advection, likewise drops off abruptly. The steep concentration gradient close to the inlet and the high advective velocity, which cause the solute to move quickly at the entrance before rapidly declining downstream, are the main causes of this decline.</p>
    <fig id="fig6" position="float">
     <label>Figure 6</label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 6. Concentration and flux profiles along the membrane length using the FEM stiffness approach (Feed Salinity = 32 k ppm).</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId202.jpeg?20251105034409" />
    </fig>
    <p>Overall, the results show that solute movement is highly localized near the membrane’s inlet, and the fluxes approach zero beyond a certain distance, indicating a dominant boundary layer effect in the transport process.</p>
    <p>The ADM result in <xref ref-type="fig" rid="fig6">
      Figure 6
     </xref> shows a very sharp concentration drop near the inlet along the membrane length, followed by near-zero concentration for most of the domain. Both advection and diffusion forces contribute to this sharp drop; the inlet flow quickly pushes solute downstream, resulting in the concentration decreasing more abruptly.</p>
    <p>Overall, the findings indicate a dominant boundary layer effect in the transport process, with solute movement being highly localized close to the membrane’s inlet and fluxes approaching zero beyond a certain distance.</p>
    <p>The ADM result in <xref ref-type="fig" rid="fig6">
      Figure 6
     </xref> shows a very sharp concentration drop near the inlet along the membrane length, followed by near-zero concentration for most of the domain. This steep decline is influenced by both advection and diffusion forces, where the inlet flow rapidly pushes solute downstream, causing the concentration to decrease much more abruptly.</p>
   </sec>
   <sec id="s3_2">
    <title>3.2. Effect of Changing Boundary Condition Configurations in ADM</title>
    <p>Since boundary conditions can highly influence the behavior and the accuracy of numerical solutions, this section investigates the concentration and solute flux along the membrane length under varying inlet and outlet boundary conditions. Different scenarios of experiments are performed to help us better understand how concentration gradients and transport dynamics respond to changes in physical constraints.</p>
    <p>
     <xref ref-type="fig" rid="fig7">
      Figure 7
     </xref> shows the concentration profiles 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         C 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> and solute fluxes 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         q 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> across the membrane length under different Dirichlet and Neumann conditions as described in Equation (10). By exploring multiple outlet flux settings, it guarantees that the model will always be adaptable and representative of real-world membrane operation circumstances. This figure highlights the boundary-layer location and mass-transfer direction that determine the outlet concentration.</p>
    <p>In all four subplots, the blue solid lines represent the solute concentration, while the orange dashed lines show the corresponding flux. Despite the changes in the outlet flux condition 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          q 
        </mi> 
        <mi>
          L 
        </mi> 
       </msub> 
      </mrow> 
     </math> ( 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          J 
        </mi> 
        <mrow> 
         <mtext>
           solute 
         </mtext> 
        </mrow> 
       </msub> 
      </mrow> 
     </math>), the unit of 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          q 
        </mi> 
        <mi>
          L 
        </mi> 
       </msub> 
      </mrow> 
     </math> is (mol/m³/m), the concentration profile consistently and quickly drops at the membrane inlet ( 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         x 
       </mi> 
       <mo>
         = 
       </mo> 
       <mn>
         0 
       </mn> 
      </mrow> 
     </math>) and flattens out. However, the flux behavior is highly sensitive to the boundary condition. For example, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          q 
        </mi> 
        <mi>
          L 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mn>
         0 
       </mn> 
      </mrow> 
     </math>, the flux approaches zero gradually; when 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          q 
        </mi> 
        <mi>
          L 
        </mi> 
       </msub> 
      </mrow> 
     </math> is positive or negative, the flux either maintains a steady value or shifts in response to the imposed boundary influence.</p>
    <p>A negative outlet flux means the solutes are being pushed into the membrane from the right side instead of exiting, which creates a reversed concentration gradient. This backward flow behavior is reflected in the shifted flux profile, even though the concentration still drops from the inlet. This creates an unusual situation where diffusion and possibly advection are influenced in the opposite direction.</p>
    <p>
     <xref ref-type="bibr" rid="scirp.146543-"></xref>A positive 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          q 
        </mi> 
        <mi>
          L 
        </mi> 
       </msub> 
      </mrow> 
     </math>, 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         C 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> drops sharply near the inlet. This is indicating a thin depletion (boundary) layer where most transport occurs, while 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         q 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> stays nearly constant along 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        x 
      </mi> 
     </math>.</p>
    <fig id="fig7" position="float">
     <label>Figure 7</label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 7. Effect of changing boundary conditions on concentration and flux profiles along the membrane length.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId226.jpeg?20251105034411" />
    </fig>
   </sec>
   <sec id="s3_3">
    <title>3.3. Mesh Sensitivity Analysis</title>
    <p>Effective solute rejection is demonstrated in every case by the concentration 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         C 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mi>
          x 
        </mi> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> rapidly approaching zero after dropping sharply at the membrane inlet. As the mesh becomes finer, the transition in the concentration profile appears smoother and more precisely defined, particularly near the inlet where the gradient is steepest. This illustrates the importance of mesh refinement in enhancing numerical stability and capturing abrupt concentration changes, particularly in regions with rapid variation.</p>
    <p>
     <xref ref-type="fig" rid="fig9">
      Figure 9
     </xref> shows that in every case, the solute flux is highest at the beginning of the membrane and quickly drops and approaches zero. This sharp decline highlights a strong concentration gradient at the inlet, with much less transport happening farther along the membrane. As the number of elements increases from 50 to 1000, the plots become more detailed and consistent, especially around the inlet where the flux changes rapidly. This suggests that using a finer mesh provides a more accurate representation of the diffusion process <xref ref-type="bibr" rid="scirp.146543-22">
      [22]
     </xref>. In this case, a mesh size of 500 to 1000 elements is sufficient to capture the true behavior.</p>
    <fig id="fig8" position="float">
     <label>Figure 8</label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 8. Effect of mesh refinement on solute concentration profile along the membrane length.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId229.jpeg?20251105034412" />
    </fig>
    <fig id="fig9" position="float">
     <label>Figure 9</label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 9. Effect of mesh refinement on flux profile along the membrane length.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId230.jpeg?20251105034412" />
    </fig>
    <p>In a discretized domain, the concentration gradient 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mfrac> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           c 
         </mi> 
        </mrow> 
        <mrow> 
         <mtext>
           d 
         </mtext> 
         <mi>
           x 
         </mi> 
        </mrow> 
       </mfrac> 
      </mrow> 
     </math> is approximated by finite differences between adjacent nodes. When the number of mesh 50 elements, the spacing between nodes is relatively wide. This makes it challenging to depict abrupt concentration changes accurately, particularly near the membrane inlet where gradients are steep. As a result, the computed flux at the inlet tends to be lower than it should be because the steep drop in concentration is numerically smoothed out. In contrast, using a finer mesh with 500 or 1000 elements provides much better resolution. Sharper gradients can be more accurately resolved by the model because nodes are spaced closer together. This improves the accuracy of the flux calculation near the inlet and results in a higher estimate of solute transport at the feed side, better capturing the physics of diffusion in that region. However, employing a finer mesh also increases the computational time required to generate results <xref ref-type="bibr" rid="scirp.146543-23">
      [23]
     </xref>.</p>
    <p>By changing the mesh size, <xref ref-type="fig" rid="fig10">
      Figure 10
     </xref> shows how good our numerical approach is in predicting concentration and flux at the membrane outlet. The Concentration Error Convergence plot shows the error in our calculated concentration. The resulting error is extremely small, around 10<sup>−</sup><sup>12</sup>. As the grid size (h) increases, the error decreases slightly. This indicates our numerical method is quite stable and produces accurate results, even when fewer computational points are used. The Outlet Flux Error plot shows the error in the calculated <u>outlet solute flux</u>. Here, the error can be effectively pushed to zero for all tested mesh sizes. That means the model perfectly matches our boundary conditions at the outlet. Overall, these plots confirm that our numerical method is reliable and robust.</p>
    <fig id="fig10" position="float">
     <label>Figure 10</label>
     <caption>
      <title>
       <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 10. Mesh convergence of the solute concentration and outlet flux.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId233.jpeg?20251105034413" />
    </fig>
   </sec>
  </sec><sec id="s4">
   <title>4. Results from COMSOL Multiphysics Simulation</title>
   <p>
    <xref ref-type="fig" rid="fig11">
     Figure 11
    </xref> shows a 3-D concentration distribution across RO membrane module at 32 k ppm feed salinity. It shows the solute concentration distribution within a cylindrical geometry, likely simulating RO membrane module. The simulation uses mol/m<sup>3</sup> as the unit for concentration. Areas with high solute buildup are visually indicated by the red zone in the center. (above 500 mol/m<sup>3</sup>) while the blue regions near the outer boundaries represent zones of low concentration, approaching that of pure solvent. This gradient suggests that solutes accumulate near the feed side and are progressively rejected or diluted when moving outward, which is a typical behavior in RO membranes.</p>
   <fig id="fig11" position="float">
    <label>Figure 11</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 11. Concentration distribution across RO membrane at 32 k ppm feed salinity.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId234.jpeg?20251105034413" />
   </fig>
   <p>The model is sliced open to reveal the internal concentration structure across the membrane’s length, providing a clear view of how solute transport behaves inside the domain. This helps evaluate membrane performance and supports the validation of numerical models such as FEM. The sharp gradient seen inside the module is further supported by the color bar on the right, which quantifies the concentration field and displays a range of 0 to 550 mol/m<sup>3</sup>.</p>
   <p>
    <xref ref-type="fig" rid="fig12">
     Figure 12
    </xref> presents the concentration distribution within a rectangular section of a membrane system, likely from a simulation of diffusion process. The color map displays solute concentration in mol/m<sup>3</sup>, with red areas indicating high concentration (above 500 mol/m<sup>3</sup>) and blue areas indicating low concentration (approaching zero). The active membrane zone where mass transfer is most intense is indicated by the sharp gradient between red and blue, particularly in the narrow vertical band. Streamlines and arrows overlaid on the plot illustrate the direction and pattern of solute flux.</p>
   <fig id="fig12" position="float">
    <label>Figure 12</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 12. Streamline flow distribution across RO membrane in COMSOL.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId235.jpeg?20251105034413" />
   </fig>
   <p>On the left side, the vertical arrows show a fairly uniform upward movement of concentrated solute, indicating flow parallel to the membrane surface probably representing feed flow. As the solute approaches the membrane surface (the red to blue transition), the direction shifts, and some of the solute begins to diffuse or be drawn perpendicularly across the membrane. The streamlines curve and disperse in the blue area on the right, illustrating how the concentration decreases on the permeate side. The contours in this region represent equal concentration levels and help illustrates the diffusion path of the solute. Overall, <xref ref-type="fig" rid="fig12">
     Figure 12
    </xref> makes it abundantly evident how the solute is moved from the high concentration feed region to the low concentration permeate side across the membrane, with the narrow transition zone exhibiting the strongest mass transfer.</p>
   <p>The results of the COMSOL simulation and the FEM-stiffness method agree well, especially when it comes to the evolution of concentration and flux across the membrane. In the COMSOL analysis, the steep concentration transition at the membrane interface is clearly visible, with high solute levels gradually dropping from the feed side (red region) to the permeate side (blue side). This matches the pattern observed in the FEM output, especially when using finer mesh resolutions. Also, the streamline flows in the COMSOL model, which illustrates the direction and strength of the flux. This shows the same trend as the FEM results. That is, there exists a strong flux at the inlet, and it weakens along the membrane length. This consistency between the two approaches reinforces the accuracy of the FEM-stiffness method in modeling solute transport in RO systems.</p>
   <p>
    <xref ref-type="table" rid="table3">
     Table 3
    </xref> compares COMSOL Multiphysics and a stiffness-based FEM for three randomly selected boundary-layer thicknesses. For each case, the outlet concentration was calculated. The methods show excellent agreement, with differences of only ~0.4% - 0.7%</p>
   <table-wrap id="table3">
    <label>
     <xref ref-type="table" rid="table3">
      Table 3
     </xref></label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.146543-"></xref>Table 3. Comparison between COMSOL multiphysics and the FEM-stiffness approach.</title>
    </caption>
    <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td class="custom-bottom-td acenter" width="24.99%"><p style="text-align:center">Boundary layer thickness (m)</p></td> 
      <td class="custom-bottom-td acenter" width="25.01%"><p style="text-align:center">COMSOL multiphysics (ppm (×10<sup>^</sup>3))</p></td> 
      <td class="custom-bottom-td acenter" width="24.99%"><p style="text-align:center">FEM-stiffness approach (ppm (×10<sup>^</sup>3))</p></td> 
      <td class="custom-bottom-td acenter" width="25.01%"><p style="text-align:center">Error (%)</p></td> 
     </tr> 
     <tr> 
      <td class="custom-top-td acenter" width="24.99%"><p style="text-align:center">0.0245</p></td> 
      <td class="custom-top-td acenter" width="25.01%"><p style="text-align:center">31.800</p></td> 
      <td class="custom-top-td acenter" width="24.99%"><p style="text-align:center">31.960</p></td> 
      <td class="custom-top-td acenter" width="25.01%"><p style="text-align:center">0.503%</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="24.99%"><p style="text-align:center">0.0310</p></td> 
      <td class="acenter" width="25.01%"><p style="text-align:center">30.610</p></td> 
      <td class="acenter" width="24.99%"><p style="text-align:center">30.815</p></td> 
      <td class="acenter" width="25.01%"><p style="text-align:center">0.670%</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="24.99%"><p style="text-align:center">0.0445</p></td> 
      <td class="acenter" width="25.01%"><p style="text-align:center">30.410</p></td> 
      <td class="acenter" width="24.99%"><p style="text-align:center">30.536</p></td> 
      <td class="acenter" width="25.01%"><p style="text-align:center">0.414%</p></td> 
     </tr> 
    </table>
   </table-wrap>
  </sec><sec id="s5">
   <title>5. Solvent Analysis of SDM</title>
   <p>In this section, we calculate the design parameters of the RO membrane under varying feed pressures and water permeability values. Water permeability, which indicates the rate of water flux through the membrane into the permeate, typically ranges from 2.78 × 10<sup>−</sup><sup>12</sup> to 5.56 × 10<sup>−</sup><sup>12</sup> m/(s·Pa) (or 1 - 2 LMH/bar) as noted by <xref ref-type="bibr" rid="scirp.146543-24">
     [24]
    </xref>. <xref ref-type="table" rid="table3">
     Table 3
    </xref> presents the net driving pressure, solvent flow rate, and salt rejection at different salinity levels and membrane permeability values. <xref ref-type="table" rid="table4">
     Table 4
    </xref> also explains the influence of feed salinity and water permeability on reverse osmosis (RO) membrane performance in terms of net driving pressure, solvent (water) flow rate, and salt rejection efficiency. Four salinity levels from 32,000 to 35,000 ppm were evaluated across five different water permeability values ranging from 2.78 × 10<sup>−</sup><sup>12</sup> to 5.56 × 10<sup>−</sup><sup>12</sup> m/(s·Pa).</p>
   <p>As feedwater salinity increases, the net driving pressure decreases slightly from 2.79 MPa at 32,000 ppm to 2.53 MPa at 35,000 ppm. This trend reflects the increasing osmotic pressure that offsets the applied hydraulic pressure. As a result, even when permeability stays constant, water flux (Q) through the membrane likewise decreases with increasing salinity. For example, at a permeability of 2.78 × 10<sup>−</sup><sup>12</sup> m/(s∙Pa), the flow rate decreases from 0.405 m<sup>3</sup>/day at 32,000 ppm to 0.368 m<sup>3</sup>/day at 35,000 ppm. Furthermore, at each salinity level, increasing membrane water permeability results in a proportional increase in flow rate. This confirms that membrane permeability is a key design parameter in achieving higher water productivity. For instance, at 33,000 ppm, increasing permeability from 2.78 × 10<sup>−</sup><sup>12</sup> to 5.56 × 10<sup>−</sup><sup>12</sup> m/(s∙Pa) increases the flow rate from 0.392 to 0.785 m<sup>3</sup>/day, effectively doubling the water output.</p>
   <table-wrap id="table4">
    <label>
     <xref ref-type="table" rid="table4">
      Table 4
     </xref></label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.146543-"></xref>Table 4. Effect of salinity and water permeability on RO membrane performance.</title>
    </caption>
    <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Salinity (ppm)</p></td> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Net driving pressure ΔP<sub>net</sub> × 10<sup>−</sup><sup>6</sup> (Pa)</p></td> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Water permeability</p><p style="text-align:center">A<sub>w</sub> × 10<sup>−</sup><sup>12</sup> (m/(s·Pa))</p></td> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Flow rate (Q) (m<sup>3</sup>/day)</p></td> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">Salt rejection (%)</p></td> 
     </tr> 
     <tr> 
      <td rowspan="5" class="custom-top-td acenter" width="17.09%"><p style="text-align:center">32,000</p></td> 
      <td rowspan="5" class="custom-top-td acenter" width="17.09%"><p style="text-align:center">2.79</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">2.78</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">0.405</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">3.47</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.506</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">4.17</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.607</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">4.86</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.708</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">5.56</p></td> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">0.809</p></td> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td rowspan="5" class="custom-top-td acenter" width="17.09%"><p style="text-align:center">33,000</p></td> 
      <td rowspan="5" class="custom-top-td acenter" width="17.09%"><p style="text-align:center">2.71</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">2.78</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">0.392</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">3.47</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.49</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">4.17</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.589</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">4.86</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.687</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">5.56</p></td> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">0.785</p></td> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td rowspan="5" class="custom-top-td acenter" width="17.09%"><p style="text-align:center">34,000</p></td> 
      <td rowspan="5" class="custom-top-td acenter" width="17.09%"><p style="text-align:center">2.62</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">2.78</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">0.38</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">3.47</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.475</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">4.17</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.57</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">4.86</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.665</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">5.5</p></td> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">0.76</p></td> 
      <td class="custom-bottom-td acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td rowspan="5" class="custom-top-td acenter" width="17.09%"><p style="text-align:center">35,000</p></td> 
      <td rowspan="5" class="custom-top-td acenter" width="17.09%"><p style="text-align:center">2.53</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">2.78</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">0.368</p></td> 
      <td class="custom-top-td acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">3.47</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.46</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">4.17</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.552</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">4.86</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.644</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="17.09%"><p style="text-align:center">5.56</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">0.735</p></td> 
      <td class="acenter" width="17.09%"><p style="text-align:center">100</p></td> 
     </tr> 
    </table>
   </table-wrap>
   <p>In all scenarios, the salt rejection remains constant at 100%, indicating that changes in water permeability and salinity within this tested range do not compromise membrane selectivity. While higher permeability improves water flux, elevated salinity imposes limits due to osmotic pressure buildup, illustrated in <xref ref-type="fig" rid="fig13">
     Figure 13
    </xref> and <xref ref-type="fig" rid="fig14">
     Figure 14
    </xref>.</p>
   <fig id="fig13" position="float">
    <label>Figure 13</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 13. Effect of water permeability and salinity on permeate flow rate.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId236.jpeg?20251105034416" />
   </fig>
   <fig id="fig14" position="float">
    <label>Figure 14</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 14. Relationship between net driving pressure, salinity, and permeate flow rate.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId237.jpeg?20251105034416" />
   </fig>
   <p>
    <xref ref-type="fig" rid="fig15">
     Figure 15
    </xref> explains the effect of net driving pressure and membrane permeability on permeate flow rate. Also, it Validates the linear dependency of flow rate on both membrane permeability and net driving pressure. Obviously selecting membranes with higher values of 
    <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <msub> 
       <mi>
         A 
       </mi> 
       <mi>
         w 
       </mi> 
      </msub> 
     </mrow> 
    </math> and operating at greater net pressures can significantly improve water production in RO systems. However, such improvements must be balanced against energy costs and system limits. Also, the x-intercepts in left plot (~0 flow rate) are around 0 Pa, consistent with the physical meaning that there is no flow without pressure difference. The right plot 3D view reinforces the same trend seen in the 2D plot but adds depth by showing how flow rate depends on the combined effect of pressure and permeability. The surface smoothly rises, confirming that both increasing permeability and pressure increase the water production.</p>
   <fig id="fig15" position="float">
    <label>Figure 15</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.146543-"></xref>Figure 15. Effect of net driving pressure and membrane permeability on permeate flow rate.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/8104817-rId240.jpeg?20251105034416" />
   </fig>
  </sec><sec id="s6">
   <title>6. Comparing with Commercial RO Modules</title>
   <p>The SW30-2514 and SW30-4021 are the two commercial RM modules manufactured by DuPont (previously called Dow FilmTec). Both are conventional spiral-wound RO membranes often found in small- to medium-scale seawater desalination facilities. The SW30-4021 is larger than SW30-2514 and has area of around 7.9 m<sup>2</sup>, while the SW30-2514 has a membrane area of roughly 2.6 m<sup>2</sup>. Both modules run best at the feed pressure of 5500 kPa. <xref ref-type="table" rid="table5">
     Table 5
    </xref> and <xref ref-type="table" rid="table6">
     Table 6
    </xref> present a comparison between the outcomes of the extended ADM-SDM model, solved using the finite element stiffness method, and the manufacturer-reported data at a feed pressure of 5500 kPa.</p>
   <p>We validate the extended model (ADM-SDM) by comparing its results with experimental data from a commercial seawater reverse osmosis (SWRO) module. Permeate flux and salt rejection are the two main performance metrics used to evaluate the accuracy of membrane models. The results demonstrate strong agreement between the simulated and manufacturer’s reported data, confirming the accuracy of the FEM model. By including advection effects, the extended model improves flow rate predictions over the traditional SDM and lowers calculation errors by more accurately representing the physical transport processes inside the membrane.</p>
   <table-wrap id="table5">
    <label>
     <xref ref-type="table" rid="table5">
      Table 5
     </xref></label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.146543-"></xref>Table 5. The comparison between ADM-SDM and SW30-2514.</title>
    </caption>
    <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td class="custom-bottom-td acenter" width="36.30%"><p style="text-align:center">Design parameter</p></td> 
      <td class="custom-bottom-td acenter" width="21.22%"><p style="text-align:center">SW30-2514</p></td> 
      <td class="custom-bottom-td acenter" width="21.24%"><p style="text-align:center">ADM-SDM</p></td> 
      <td class="custom-bottom-td acenter" width="21.24%"><p style="text-align:center">Error (%)</p></td> 
     </tr> 
     <tr> 
      <td class="custom-top-td acenter" width="36.30%"><p style="text-align:center">Permeate flux (m<sup>3</sup>/day)</p></td> 
      <td class="custom-top-td acenter" width="21.22%"><p style="text-align:center">0.60</p></td> 
      <td class="custom-top-td acenter" width="21.24%"><p style="text-align:center">0.607</p></td> 
      <td class="custom-top-td acenter" width="21.24%"><p style="text-align:center">0.7</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="36.30%"><p style="text-align:center">Salt rejection (%)</p></td> 
      <td class="acenter" width="21.22%"><p style="text-align:center">99.40</p></td> 
      <td class="acenter" width="21.24%"><p style="text-align:center">100</p></td> 
      <td class="acenter" width="21.24%"><p style="text-align:center">0.60</p></td> 
     </tr> 
    </table>
   </table-wrap>
   <table-wrap id="table6">
    <label>
     <xref ref-type="table" rid="table6">
      Table 6
     </xref></label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.146543-"></xref>Table 6. The comparison between SDM and SW30-4021.</title>
    </caption>
    <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td class="custom-bottom-td acenter" width="36.09%"><p style="text-align:center">Design parameter</p></td> 
      <td class="custom-bottom-td acenter" width="21.30%"><p style="text-align:center">SW30-4021</p></td> 
      <td class="custom-bottom-td acenter" width="21.30%"><p style="text-align:center">ADM-SDM</p></td> 
      <td class="custom-bottom-td acenter" width="21.31%"><p style="text-align:center">Error (%)</p></td> 
     </tr> 
     <tr> 
      <td class="custom-top-td acenter" width="36.09%"><p style="text-align:center">Permeate flux (m<sup>3</sup>/day)</p></td> 
      <td class="custom-top-td acenter" width="21.30%"><p style="text-align:center">7.4</p></td> 
      <td class="custom-top-td acenter" width="21.30%"><p style="text-align:center">7.204</p></td> 
      <td class="custom-top-td acenter" width="21.31%"><p style="text-align:center">2.6</p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="36.09%"><p style="text-align:center">Salt rejection (%)</p></td> 
      <td class="acenter" width="21.30%"><p style="text-align:center">99.40</p></td> 
      <td class="acenter" width="21.30%"><p style="text-align:center">100</p></td> 
      <td class="acenter" width="21.31%"><p style="text-align:center">0.60</p></td> 
     </tr> 
    </table>
   </table-wrap>
   <p>Due to idealized assumptions in diffusivity and membrane homogeneity, the model’s constant salt rejection prediction of 100% may somewhat exceed real-world performance. This validation confirms that by using FEM, the expanded ADM-SDM framework offers a strong tool for simulating solute and solvent transport in RO membranes. Its precision in anticipating commercial module performance supports its application in membrane selection, and performance analysis.</p>
   <p>To validate our model against experimental results, we compared our salt rejection results with findings from two independent studies. For instance, <xref ref-type="bibr" rid="scirp.146543-25">
     [25]
    </xref> reported a salt rejection of 97.5% at a feed pressure of 1100 kPa and a feed concentration of 2 kg/m<sup>3</sup>. Our model predicted 96.8% under the same conditions, which is only 0.72% off. This indicates strong agreement with the report.</p>
   <p>Also, <xref ref-type="bibr" rid="scirp.146543-26">
     [26]
    </xref> reported a salt rejection of approximately 99% at 40 bar (4000 kPa) and 30,000 ppm. Our model predicted 98.78% under the same conditions, which is only 0.22% off. This indicates strong agreement with the report.</p>
   <p>Like other models, the ADM-SDM framework has limitations in fully capturing transport mechanisms that occur within the thin boundary layers near the membrane surface because the flow behavior becomes complex and less predictable. In addition, mathematical models like the ADM-SDM framework does not fully reflect events such as membrane fouling, in which solute particles build up and clog membrane pores over time, hence gradually reducing performance.</p>
  </sec><sec id="s7">
   <title>7. Conclusions</title>
   <p>This study proposes an extended mass transport model for reverse osmosis (RO) membranes by coupling the ADM with SDM and solving it using FEM with a linear stiffness approach. The results demonstrate good agreement between ADM-SDM via COMSOL and experimental data from commercial RO modules, validating the model’s accuracy. The FEM stiffness method showed that solute concentration and flux are strongly localized near the membrane inlet. Both advective and diffusive fluxes peak at the feeding side and decrease rapidly downstream, confirming the dominant role of boundary layer effects in solute rejection.</p>
   <p>Varying boundary conditions highly affected solute flux behavior while concentration profiles remained steep at the inlet and flattened along the membrane. Reversed gradients were produced by negative outlet flux conditions, demonstrating how sensitive flux predictions are to boundary conditions. Changing the mesh size improved the accuracy of concentration and flux profiles near the inlet, where gradients are steepest. A mesh resolution of 500 - 1000 elements was sufficient to capture sharp variations, while error convergence plots confirmed that the numerical method is both stable and reliable.</p>
   <p>The extended Advection-Diffusion solution (ADM-SDM) model showed close agreement with manufacturer-reported data for commercial modules (SW30-2514 and SW30-4021). The model’s predictions were accurate because the errors in permeate flux forecasts stayed below 3% and the estimates for salt rejection were slightly higher than the reported values.</p>
   <p>The salt rejection is calculated using following formula:</p>
   <p>
    <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mtext>
        Salt Rejection 
      </mtext> 
      <mrow> 
       <mo>
         ( 
       </mo> 
       <mi>
         % 
       </mi> 
       <mo>
         ) 
       </mo> 
      </mrow> 
      <mo>
        = 
      </mo> 
      <mrow> 
       <mo>
         ( 
       </mo> 
       <mrow> 
        <mn>
          1 
        </mn> 
        <mo>
          − 
        </mo> 
        <mfrac> 
         <mrow> 
          <msub> 
           <mi>
             C 
           </mi> 
           <mi>
             p 
           </mi> 
          </msub> 
         </mrow> 
         <mrow> 
          <msub> 
           <mi>
             C 
           </mi> 
           <mi>
             f 
           </mi> 
          </msub> 
         </mrow> 
        </mfrac> 
       </mrow> 
       <mo>
         ) 
       </mo> 
      </mrow> 
      <mo>
        × 
      </mo> 
      <mn>
        100 
      </mn> 
      <mi>
        % 
      </mi> 
     </mrow> 
    </math></p>
   <p>where 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <msub> 
       <mi>
         C 
       </mi> 
       <mi>
         p 
       </mi> 
      </msub> 
     </mrow> 
    </math> and 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <msub> 
       <mi>
         C 
       </mi> 
       <mi>
         f 
       </mi> 
      </msub> 
     </mrow> 
    </math> are the solute concentrations in the permeate and feed, respectively.</p>
   <p>Because 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <msub> 
       <mi>
         C 
       </mi> 
       <mi>
         p 
       </mi> 
      </msub> 
      <mo>
        ≪ 
      </mo> 
      <msub> 
       <mi>
         C 
       </mi> 
       <mi>
         f 
       </mi> 
      </msub> 
     </mrow> 
    </math> the calculated salt rejection was 99.99%, which was rounded to 100%. While the extended ADM-SDM framework provides reliable predictions of solute transport and permeate flux, certain model assumptions contribute to differences between the estimated salt rejection and the manufacturer specifications of commercial RO membranes. These assumptions include the linearization based on low solute concentrations and weak coupling effects, as well as the exclusion of electromigration.</p>
   <p>Overall, including the advection effects improved the flux predictions compared to traditional SDM approaches. It is precisely calculating salt rejection and permeate flux. The model offers a scalable and computationally effective tool for designing, optimizing, and assessing the performance of reverse osmosis (RO) systems in practical desalination applications. In addition to accurately forecasting performance metrics, the extended ADM-SDM framework offers recommendations for creating anti-fouling and energy-saving techniques for RO desalination systems.</p>
   <p>The accumulation of solute at the membrane surface relative to the bulk solution is known as concentration polarization <xref ref-type="bibr" rid="scirp.146543-27">
     [27]
    </xref>. There are significant design and operational implications to our discovery that flux is highly localized at the membrane inlet. High concentrations in this area raise the local osmotic pressure, which decreases flux efficiency and the effective driving force for water transport. By determining the concentration behavior at the inlet, as we performed in our analysis, strategies like staged feed distribution or inlet pressure adjustment can be used to more evenly redistribute flux along the membrane. As a result, fouling is minimized, which lowers water flow, boosts pressure drop, shortens membrane life, and raises operating expenses <xref ref-type="bibr" rid="scirp.146543-28">
     [28]
    </xref>. Although the ADM-SDM model is quite effective and accurate, it is still unable to account for membrane fouling and electromigration force. Therefore, the integration of fouling behavior and transient transport processes should be the main focus of future research. Predictive simulations for RO systems would become much more realistic as a result.</p>
  </sec><sec id="s8">
   <title>Acknowledgements</title>
   <p>The leading author would like to thanks Dr. Tongdan Jin, Professor of Ingram School of Engineering at Texas State University, for reviewing and revising the manuscript as well as providing valuable comments during the writing and submission of this manuscript.</p>
  </sec>
 </body><back>
  <ref-list>
   <title>References</title>
   <ref id="scirp.146543-ref1">
    <label>1</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Ang, W.L. and Mohammad, A.W. (2015) Mathematical Modeling of Membrane Operations for Water Treatment. In: Basile, A., Cassano, A. and Rastogi, N.K., Eds., Advances in Membrane Technologies for Water Treatment, Elsevier, 379-407. &gt;https://doi.org/10.1016/b978-1-78242-121-4.00012-5
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref2">
    <label>2</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Giorno, L., Strathmann, H. and Drioli, E. (2015) Mathematical Description of Mass Transport in Membranes. In: Drioli, E. and Giorno, L., Eds., Encyclopedia of Membranes, Springer, 1-4. &gt;https://doi.org/10.1007/978-3-642-40872-4_2224-1
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref3">
    <label>3</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Liu, L. (2018) Application of a Hydrodynamic and Water Quality Model for Inland Surface Water Systems. In: Malcangio, D., Ed., Applications in Water Systems Management and Modeling, InTech. &gt;https://doi.org/10.5772/intechopen.74914
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref4">
    <label>4</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Ault, J.T. and Shin, S. (2025) Physicochemical Hydrodynamics of Particle Diffusiophoresis Driven by Chemical Gradients. Annual Review of Fluid Mechanics, 57, 227-255. &gt;https://doi.org/10.1146/annurev-fluid-030424-110950
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref5">
    <label>5</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Ayrapetyan, S. (2020) The Quantum-Mechanical Sensitive Na/k Pump Is a Key Mechanism for the Metabolic Control of Neuronal Membrane Function. Open Journal of Biophysics, 10, 59-83. &gt;https://doi.org/10.4236/ojbiphy.2020.102006
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref6">
    <label>6</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Tiraferri, A., Malaguti, M., Mohamed, M., Giagnorio, M. and Aschmoneit, F.J. (2023) Standardizing Practices and Flux Predictions in Membrane Science via Simplified Equations and Membrane Characterization. npj Clean Water, 6, Article No. 58. &gt;https://doi.org/10.1038/s41545-023-00270-w
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref7">
    <label>7</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Dai, R., Yang, Z., Qiu, Z., Long, L., Tang, C.Y. and Wang, Z. (2022) Distinct Impact of Substrate Hydrophilicity on Performance and Structure of TFC NF and RO Polyamide Membranes. Journal of Membrane Science, 662, Article ID: 120966. &gt;https://doi.org/10.1016/j.memsci.2022.120966
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref8">
    <label>8</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Giorno, L. and Drioli, E. (2000) Biocatalytic Membrane Reactors: Applications and Perspectives. Trends in Biotechnology, 18, 339-349. &gt;https://doi.org/10.1016/s0167-7799(00)01472-4
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref9">
    <label>9</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Marx, D., Joss, L., Hefti, M. and Mazzotti, M. (2016) Temperature Swing Adsorption for Postcombustion CO
     <sub>2</sub> Capture: Single-and Multicolumn Experiments and Simulations. Industrial &amp; Engineering Chemistry Research, 55, 1401-1412. &gt;https://doi.org/10.1021/acs.iecr.5b03727
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref10">
    <label>10</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Tsirlin, A.M. (2023) Thermodynamic Analysis of Irreversible Processes of the Reverse Osmosis and Diffusion Machines. Journal of Engineering Physics and Thermophysics, 96, 555-567. &gt;https://doi.org/10.1007/s10891-023-02717-w
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref11">
    <label>11</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Du, Y., Wang, Z., Cooper, N.J., Gilron, J. and Elimelech, M. (2022) Module-scale Analysis of Low-Salt-Rejection Reverse Osmosis: Design Guidelines and System Performance. Water Research, 209, Article ID: 117936. &gt;https://doi.org/10.1016/j.watres.2021.117936
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref12">
    <label>12</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Matsuura, T., Guiver, M.D., Lau, W.J. and Ismail, A.F. (2025) Transport in Reverse Osmosis Membranes: Observations and Comments on the Pore Flow Model versus the Solution-Diffusion Model. Frontiers in Membrane Science and Technology, 4, Article 1513591. &gt;https://doi.org/10.3389/frmst.2025.1513591
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref13">
    <label>13</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Wang, L., Cao, T., Dykstra, J.E., Porada, S., Biesheuvel, P.M. and Elimelech, M. (2021) Salt and Water Transport in Reverse Osmosis Membranes: Beyond the Solution-Diffusion Model. Environmental Science &amp; Technology, 55, 16665-16675. &gt;https://doi.org/10.1021/acs.est.1c05649
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref14">
    <label>14</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Biesheuvel, P.M., Porada, S., Elimelech, M. and Dykstra, J.E. (2022) Tutorial Review of Reverse Osmosis and Electrodialysis. Journal of Membrane Science, 647, Article ID: 120221. &gt;https://doi.org/10.1016/j.memsci.2021.120221
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref15">
    <label>15</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Taylor, R.F., Martinez-Jimenez, F. and Logan, B.E. (2025) Tuning Initial pH to Decrease Salt Ion Transport in Saltwater Electrolysis. Electrochemistry Communications, 171, Article ID: 107858. &gt;https://doi.org/10.1016/j.elecom.2024.107858
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref16">
    <label>16</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Zhang, L., Hamelers, H.V.M. and Biesheuvel, P.M. (2020) Modeling Permeate Ph in RO Membranes by the Extended Donnan Steric Partitioning Pore Model. Journal of Membrane Science, 613, Article ID: 118511. &gt;https://doi.org/10.1016/j.memsci.2020.118511
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref17">
    <label>17</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Siva Prasad Reddy, B.V. and Rajesh Babu, K. (2016) Application of Variational Methods and Galerkin Method in Solving Engineering Problems Represented by Ordinary Differential Equations. Proceedings of IRF International Conference, Goa, 28th February 2016, 36-37. &gt;https://www.digitalxplore.org/up_proc/pdf/206-145672797836-41.pdf 
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref18">
    <label>18</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Nguyen, V.P., Rabczuk, T., Bordas, S. and Duflot, M. (2008) Meshless Methods: A Review and Computer Implementation Aspects. Mathematics and Computers in Simulation, 79, 763-813. &gt;https://doi.org/10.1016/j.matcom.2008.01.003
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref19">
    <label>19</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Hansen, M.S. (2013) Boundary Conditions for 3D Fluid-Structure Interaction Simulations of Compliant Vessels (By Norwegian University of Science and Technology). &gt;https://leifh.folk.ntnu.no/alumni/2013_Merethe_Sirevaag_Hansen.pdf 
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref20">
    <label>20</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Dougaj4 (2017) Stepping through 3DFrame. Newton Excel Bach, not (Just) an Excel Blog. &gt;https://newtonexcelbach.com/2017/09/16/stepping-through-3dframe/ 
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref21">
    <label>21</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Moradi, N., Liu, B., Iversen, M., Kuypers, M.M., Ploug, H. and Khalili, A. (2018) A New Mathematical Model to Explore Microbial Processes and Their Constraints in Phytoplankton Colonies and Sinking Marine Aggregates. Science Advances, 4, eaat1991. &gt;https://doi.org/10.1126/sciadv.aat1991
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref22">
    <label>22</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Lee, S. (2025) Numerical Solution of PDEs for Chemical Engineers. Number Analytics. &gt;https://www.numberanalytics.com/blog/numerical-solution-of-pdes-for-chemical-engineers 
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref23">
    <label>23</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Kolar-Požun, A. AND Kosec, G. (2025) A Meshless Method for Computational Electromagnetics with Improved Dispersion Properties. arXiv: 2508.18205. &gt;https://arxiv.org/html/2508.18205v1 
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref24">
    <label>24</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Okamoto, Y. and Lienhard, J.H. (2019) How RO Membrane Permeability and Other Performance Factors Affect Process Cost and Energy Use: A Review. Desalination, 470, Article ID: 114064. &gt;https://doi.org/10.1016/j.desal.2019.07.004
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref25">
    <label>25</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Hadadian, Z., Zahmatkesh, S., Ansari, M., Haghighi, A. and Moghimipour, E. (2021) Mathematical and Experimental Modeling of Reverse Osmosis (RO) Process. Korean Journal of Chemical Engineering, 38, 366-379. &gt;https://doi.org/10.1007/s11814-020-0697-9
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref26">
    <label>26</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     El-Brol, A., Ahmed, E., EL-Samadony, Y., Hammad, F. and Ismaeil, K. (2023) Experimental and Theoretical Study on Reverse Osmosis Based Water Desalination. Journal of Engineering Research, 7, Article 26. &gt;https://doi.org/10.21608/erjeng.2023.234375.1230
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref27">
    <label>27</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Jung, O., Saravia, F., Wagner, M., Heißler, S. and Horn, H. (2019) Quantifying Concentration Polarization—Raman Microspectroscopy for In-Situ Measurement in a Flat Sheet Cross-Flow Nanofiltration Membrane Unit. Scientific Reports, 9, Article No. 15885. &gt;https://doi.org/10.1038/s41598-019-52369-1
    </mixed-citation>
   </ref>
   <ref id="scirp.146543-ref28">
    <label>28</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Tayeh, Y.A., Alazaiza, M.Y.D., Alzghoul, T.M. and Bashir, M.J. (2025) A Comprehensive Review of RO Membrane Fouling: Mechanisms, Categories, Cleaning Methods and Pretreatment Technologies. Journal of Hazardous Materials Advances, 18, Article ID: 100684. &gt;https://doi.org/10.1016/j.hazadv.2025.100684
    </mixed-citation>
   </ref>
  </ref-list>
 </back>
</article>