<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel rdf:about="https://community.wolfram.com">
    <title>Community RSS Feed</title>
    <link>https://community.wolfram.com</link>
    <description>RSS Feed for Wolfram Community showing questions tagged with Chemistry sorted by most viewed.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1551098" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/176000" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/126143" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/534384" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/140887" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/135497" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/172875" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/543579" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/135901" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1575334" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/745617" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1875994" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/255212" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/88228" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/562253" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/887789" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/410320" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/231388" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/154381" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/399734" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1551098">
    <title>Modeling jump conditions in interphase mass transfer</title>
    <link>https://community.wolfram.com/groups/-/m/t/1551098</link>
    <description>***NOTE: Download Full Article as a Notebook from the Attachment Below***&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
Interphase mass transfer operations such as gas absorption or liquid-liquid extraction pose a modeling challenge because the molar species concentration can jump between 2 states at the interface as shown below (from [here][2]).&#xD;
![enter image description here][3]&#xD;
I wanted to see if I could create a Finite Element Method (FEM) model of jump conditions in the Wolfram Language. I found the results to be reasonable, aesthetically pleasing, and somewhat mesmerizing. The remainder of this post documents my workflow for those that might be interested.  I have attached a notebook to reproduce the results.&#xD;
## Preamble on analytical solutions to PDE&amp;#039;s&#xD;
&#xD;
There seems to be quite a few posts where people are trying to find the analytical solution to a system of PDE&amp;#039;s. Generally, closed formed analytical solutions only exist in rare-highly symmetric cases.  Let us consider the heat equation below.&#xD;
&#xD;
$$\frac{\partial T}{\partial t}=\alpha \frac{\partial^2 T}{\partial x^2}$$&#xD;
&#xD;
For the case of a semi-infinite bar subjected to a unit step change in temperature at $x=0$, Mathematica&amp;#039;s DSolve\[\] handles this readily.&#xD;
&#xD;
    u[x, t] /. &#xD;
     First@DSolve[{ D[u[x, t], t] == alpha D[u[x, t], {x, 2}], &#xD;
        u[x, 0] == 0, u[0, t] == UnitStep[t]}, u[x, t], {x, t}, &#xD;
       Assumptions -&amp;gt; alpha &amp;gt; 0 &amp;amp;&amp;amp; 0 &amp;lt; x]&#xD;
    (*Erfc[x/(2*Sqrt[alpha]*Sqrt[t])]*)&#xD;
&#xD;
So far so good. Now, let us break symmetry by making it a finite bar of length $l$ (See [Documentation][4]).&#xD;
&#xD;
    heqn = D[u[x, t], t] == alpha D[u[x, t], {x, 2}];&#xD;
    bc = {u[0, t] == 1, u[l, t] == 0};&#xD;
    ic = u[x, 0] == 0;&#xD;
    sol = DSolve[{heqn, bc, ic}, u[x, t], {x, t}]&#xD;
    (*{{u[x, t] -&amp;gt; 1 - x/l - (2*Inactive[Sum][Sin[(Pi*x*K[1])/l]/(E^((alpha*Pi^2*t*K[1]^2)/l^2)*&#xD;
             K[1]), {K[1], 1, Infinity}])/Pi}}*)&#xD;
&#xD;
This little change going from a semi-infinite to finite domain has turned the solution into an unwieldy infinite sum. We should expect that it will only go down hill from here if we add additional complexity to the equation or system of equations. My advice is to abandon the search for an analytical solution quickly because it will likely take great effort and will be unlikely to yield a result. Instead, focus efforts on more productive avenues such as dimensional analysis and numerical solutions.&#xD;
&#xD;
# Introduction&#xD;
&#xD;
&amp;gt;&amp;#034;All models are wrong, some are useful.&amp;#034; -- George E. P. Box&#xD;
&amp;gt;&amp;#034;However, many systems are highly complex, so that valid&#xD;
mathematical models of them are themselves complex, precluding any&#xD;
possibility of an analytical solution. In this case, the model must be studied&#xD;
by means of simulation, i.e. , numerically exercising the model for the inputs&#xD;
in question to see how they affect the output measures of performance.&amp;#034; -- Dr. Averill Law, Simulation Modeling and Analysis&#xD;
&#xD;
I find the quotes above help me overcome inertia when starting a modeling and simulation project.  Create your wrong model.  Calibrate how wrong it is versus a known standard. If it is not too bad, put the model through its paces.&#xD;
&#xD;
One thing that I appreciate about the Wolfram Language is that I can document a modeling workflow development process from beginning to end in a single notebook.  The typical model workflow development process includes:&#xD;
&#xD;
* A sketch of the system of interest.&#xD;
* Equations.&#xD;
    * Initial development.&#xD;
    * Simplification.&#xD;
    * Non-dimensionalization for better scaling and reducing parameter space.&#xD;
* Mathematica implementation.&#xD;
    * Mesh&#xD;
        * Boundaries&#xD;
        * Refinement&#xD;
    * NDSolve set-up&#xD;
    * Post-process results&#xD;
* Verification/Validation&#xD;
&#xD;
Mathematica notebooks tend to age well. I routinely resurrect notebooks that are over a decade old and they generally still work. &#xD;
&#xD;
## Absorption&#xD;
I did a quick Google search on absorption and came across this figure describing gas absorption in an open access article by [Danish _et al_][5].&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
This image looked very similar to an image that I produced in a [related post](http://community.wolfram.com/groups/-/m/t/1470252) to the Wolfram community regarding porous media energy transport.&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
The systems look so similar, that we ought to be able to reuse much of the modeling. An area of concern would be for gas absorption where the ratio of the gas diffusion coefficient to liquid diffusion coefficient can exceed 4 orders of magnitude.  Such differences often can cause instability in numerical approaches.&#xD;
# Modeling&#xD;
## System description&#xD;
For clarity, I always like to begin with a system description. Typically, absorption processes utilize gravity to create a thin liquid film to contact the gas. To reuse the modeling that we did for porous media, we will assume that gravity is in the positive $x$ direction leading us to the image below.&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
We will assume that the liquid film is a uniform thickness and is laminar (note that for gas liquid contact the liquid velocity is fastest at the interface leading to the parabolic profile shown).  We will assume that the gas has a uniform velocity. Further, we will assume that the incoming concentrations of the absorbing species are zero and we will impose a concentration of $C=C_0$ at the lower boundary.&#xD;
&#xD;
The basic dimensions of the box are shown below. For simplicity, we will make the height and length unit dimensions and set $R$ to be $\frac{1}{2}$.&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
## Balance equations&#xD;
### Dilute species balance&#xD;
For the purposes of this exercise, we will consider the system to be dilute such that diffusion does not affect the overall flow velocities. Within a single phase, the molar balance of concentration is given by equation (1). We will assume steady-state operation with no reactions so that we can eliminate the red terms. &#xD;
&#xD;
$${\color{Red}{\frac{{\partial {C}}}{{\partial t}}}} + &#xD;
\mathbf{v} \cdot \nabla C -&#xD;
 \nabla \cdot \mathcal{D} \nabla C - {\color{Red}{r^{&amp;#039;&amp;#039;&amp;#039;}}}&#xD;
 = 0 \qquad (1)$$&#xD;
 &#xD;
### Species balance in each phase&#xD;
For convenience, I will denote the phases by a subscript G and L for gas and liquid with the understanding that these equations could also apply to a liquid-liquid extraction problem.  This leads to the following concentration balance equations for the liquid and gas phases.&#xD;
 &#xD;
$$\begin{gathered} &#xD;
\begin{matrix}&#xD;
\mathbf{v}_L \cdot \nabla C_L +&#xD;
 \nabla \cdot \left(-\mathcal{D}_L \nabla C_L\right)  = 0 &amp;amp; x,y\in \Omega_L  &amp;amp; (2*) \\ &#xD;
\mathbf{v}_G \cdot \nabla C_G +&#xD;
 \nabla \cdot \left(-\mathcal{D}_G \nabla C_G\right)  = 0 &amp;amp; x,y\in \Omega_G  &amp;amp; (3*) \\&#xD;
\end{matrix}&#xD;
\end{gathered}$$&#xD;
&#xD;
Or in Laplacian form&#xD;
&#xD;
$$\begin{gathered} &#xD;
\begin{matrix}&#xD;
\mathbf{v}_L \cdot \nabla C_L -\mathcal{D}_L&#xD;
 \nabla^2 C_L  = 0 &amp;amp; x,y\in \Omega_L  &amp;amp; (2*) \\ &#xD;
\mathbf{v}_G \cdot \nabla C_G -\mathcal{D}_G&#xD;
 \nabla^2 C_G  = 0 &amp;amp; x,y\in \Omega_G  &amp;amp; (3*)  \\&#xD;
\end{matrix}&#xD;
\end{gathered}$$&#xD;
&#xD;
#### Creating a No-Flux Boundary Condition at the Interface&#xD;
To prevent the gas species diffusing into the liquid layer and _vice versa_, I will set the velocities to zero and the diffusion coefficients to a very small value in the other phase.  From a visualization standpoint, it will appear that the gas species has diffused into the liquid layer and _vice versa_, but the flux is effectively zero.  To clean up the visualization, we will define plot ranges by gas, interphase, and liquid regions.&#xD;
&#xD;
### Species balance including a thin interphase region&#xD;
&#xD;
We will define a thin Interphase region between the 2 phases that will allow us to couple the phases in the interphase region via a source term creating the jump discontinuity in concentration as shown in the figure below.&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
We will modify (2\*) and (3\*) with the coupling source term as shown below.&#xD;
&#xD;
$$\begin{gathered} &#xD;
\begin{matrix}&#xD;
\mathbf{v}_L \cdot \nabla C_L -\mathcal{D}_L&#xD;
 \nabla^2 C_L -&#xD;
\sigma\left(\Omega \right )k\left(K C_G-C_L \right ) = 0 &amp;amp; x,y\in \Omega  &amp;amp; (2) \\ &#xD;
\mathbf{v}_G \cdot \nabla C_G -\mathcal{D}_G&#xD;
 \nabla^2 C_G + \sigma\left(\Omega \right )k\left(K C_G-C_L \right ) = 0 &amp;amp; x,y\in \Omega  &amp;amp; (3)  \\&#xD;
\end{matrix}&#xD;
\end{gathered}$$&#xD;
&#xD;
Where $K$ is a vapor-liquid equilibrium constant, $k$ is in interphase mass transfer coefficient (we will make this large because we want a fast approach to equilibrium), and $\sigma$ is a switch that turns on (=1) in the interface region and 0 otherwise.&#xD;
&#xD;
## Dimensional analysis&#xD;
&#xD;
We will multiply equations (2) and (3) by $\frac{{R^2}}{C_0 \mathcal{D}_G}$ to obtain their non-dimensionalized forms (4) and (5).&#xD;
&#xD;
$$\begin{gathered} &#xD;
\begin{matrix}&#xD;
 C_0\left (\frac{\mathbf{v}_L}{R} \cdot \nabla^* C_{L}^{*} -\frac{\mathcal{D}_L}{R^2}&#xD;
 \nabla^{*2} C_{L}^{*} -&#xD;
\sigma\left(\Omega \right )k\left(K C_{G}^{*}-C_{L}^{*} \right )  \right ) =  0\left\| {\frac{{R^2}}{C_0 \mathcal{D}_G}} \right.  \\ &#xD;
C_0\left (\frac{\mathbf{v}_G}{R} \cdot \nabla^* C_{G}^{*} -\frac{\mathcal{D}_G}{R^2}&#xD;
 \nabla^{*2} C_{G}^{*} + \sigma\left(\Omega \right )k\left(K C_{G}^{*}-C_{L}^{*} \right )  \right ) = 0\left\| {\frac{{R^2}}{C_0 \mathcal{D}_G}} \right. \\&#xD;
\end{matrix}&#xD;
\end{gathered}$$&#xD;
&#xD;
$$\begin{gathered} &#xD;
\begin{matrix}&#xD;
\frac{\mathcal{D}_L}{\mathcal{D}_G} \frac{R\mathbf{v}_L}{\mathcal{D}_L} \cdot \nabla^* C_{L}^{*} -\delta &#xD;
 \nabla^{*2} C_{L}^{*} -&#xD;
\sigma\left(\Omega \right )\kappa\left(K C_{G}^{*}-C_{L}^{*} \right )  = 0  \\ &#xD;
\frac{R\mathbf{v}_G}{\mathcal{D}_G} \cdot \nabla^* C_{G}^{*} -&#xD;
 \nabla^{*2} C_{G}^{*} + \sigma\left(\Omega \right )\kappa\left(K C_{G}^{*}-C_{L}^{*} \right ) = 0\\&#xD;
\end{matrix}&#xD;
\end{gathered}$$&#xD;
&#xD;
$$\begin{gathered} &#xD;
\begin{matrix}&#xD;
 \delta{Pe}_L\mathbf{v}_{L}^* \cdot \nabla^* C_{L}^{*} -\delta &#xD;
 \nabla^{*2} C_{L}^{*} -&#xD;
\sigma\left(\Omega \right )\kappa\left(K C_{G}^{*}-C_{L}^{*} \right )  = 0 &amp;amp; (4)  \\ &#xD;
{Pe}_G\mathbf{v}_{G}^* \cdot \nabla^* C_{G}^{*} -&#xD;
 \nabla^{*2} C_{G}^{*} + \sigma\left(\Omega \right )\kappa\left(K C_{G}^{*}-C_{L}^{*} \right ) = 0 &amp;amp;(5)\\&#xD;
\end{matrix}&#xD;
\end{gathered}$$&#xD;
&#xD;
Where&#xD;
&#xD;
$$\delta=\frac{\mathcal{D}_L}{\mathcal{D}_G}$$&#xD;
$$Pe_L=\frac{R\mathbf{v}_L}{\mathcal{D}_L}$$&#xD;
$$Pe_G=\frac{R\mathbf{v}_G}{\mathcal{D}_G}$$&#xD;
&#xD;
With a good dimensionless model in place, we can start with our Wolfram Language implementation.&#xD;
&#xD;
# Wolfram Language Implementation&#xD;
&#xD;
## Mesh creation&#xD;
We start by loading the FEM package.&#xD;
&#xD;
    Needs[&amp;#034;NDSolve`FEM`&amp;#034;]&#xD;
&#xD;
When I started this effort, I considered co-current flow only. I realized that converting the model to counter-current flow was a simple matter of changing boundary markers.  I wrapped the process up in a module that returns an association whose parameters can be used to set up an NDSolve solution.  In the counter-current case, I changed the bottom boundary to a wall and the gas inlet concentration to 1.&#xD;
&#xD;
    makeMesh[h_, l_, rat_, gf_, cf_] := &#xD;
     Module[{bR, tp, bt, lf, rt, th, interfacel, interfaceg, buf, bnds, &#xD;
       rgs, crds, lelms, boundaryMarker, bcEle, bmsh, liquidCenter, &#xD;
       liquidReg, interfaceCenter, interfaceReg, gasCenter, gasReg, &#xD;
       meshRegs, msh, mDic},&#xD;
      (* Domain Dimensions *)&#xD;
      bR = rat h;&#xD;
      tp = bR;&#xD;
      bt = bR - h;&#xD;
      lf = 0;&#xD;
      rt = l;&#xD;
      th = h/gf;&#xD;
      interfacel = 0;&#xD;
      interfaceg = interfacel - th;&#xD;
      buf = 2.5 th;&#xD;
      &#xD;
      (* Use associations for clearer assignment later *)&#xD;
      bnds = &amp;lt;|liquidinlet -&amp;gt; 1, gasinlet -&amp;gt; 2, bottom -&amp;gt; 3|&amp;gt;;&#xD;
      rgs = &amp;lt;|gas -&amp;gt; 10, liquid -&amp;gt; 20, interface -&amp;gt; 15|&amp;gt;;&#xD;
      &#xD;
      (* Meshing Definitions *)&#xD;
      (* Coordinates *)&#xD;
      crds = {{lf, bt}(*1*), {rt, bt}(*2*), {rt, tp}(*3*), {lf, &#xD;
         tp}(*4*), {lf, interfacel}(*5*), {rt, interfacel}(*6*), {lf, &#xD;
         interfaceg}(*7*), {rt, interfaceg}(*8*)};&#xD;
      &#xD;
      (* Edges *)&#xD;
      lelms = {{1, 7}, {7, 5}, {5, 4}, {1, 2},&#xD;
               {2, 8}, {8, 6}, {6, 3}, {3, 4}, &#xD;
               {5, 6}, {7, 8}};&#xD;
      &#xD;
      (* Conditional Boundary Markers depending on configuration *)&#xD;
      boundaryMarker := {bnds[gasinlet], bnds[liquidinlet], &#xD;
         bnds[liquidinlet], bnds[bottom], 4, 4, 4, 4, 4, 4} /; cf == &amp;#034;Co&amp;#034;;&#xD;
      boundaryMarker := {4, 4, bnds[liquidinlet], bnds[bottom], &#xD;
         bnds[gasinlet], 4, 4, 4, 4, 4} /; cf == &amp;#034;Counter&amp;#034;;&#xD;
      &#xD;
      (* Create Boundary Mesh *)&#xD;
      bcEle = {LineElement[lelms, boundaryMarker]};&#xD;
      bmsh = ToBoundaryMesh[&amp;#034;Coordinates&amp;#034; -&amp;gt; crds, &#xD;
        &amp;#034;BoundaryElements&amp;#034; -&amp;gt; bcEle];&#xD;
      &#xD;
      (* 2D Regions *)&#xD;
      (* Identify Center Points of Different Material Regions *)&#xD;
      liquidCenter = {(lf + rt)/2, (tp + interfacel)/2};&#xD;
      liquidReg = {liquidCenter, rgs[liquid], 0.0005};&#xD;
      interfaceCenter = {(lf + rt)/2, (interfacel + interfaceg)/2};&#xD;
      interfaceReg = {interfaceCenter, rgs[interface], 0.5*0.000005};&#xD;
      gasCenter = {(lf + rt)/2, (bt + interfaceg)/2};&#xD;
      gasReg = {gasCenter, rgs[gas], 0.0005};&#xD;
      meshRegs = {liquidReg, interfaceReg, gasReg};&#xD;
      &#xD;
      msh = ToElementMesh[bmsh, &amp;#034;RegionMarker&amp;#034; -&amp;gt; meshRegs,&#xD;
        MeshRefinementFunction -&amp;gt; Function[{vertices, area},&#xD;
          Block[{x, y},&#xD;
           {x, y} = Mean[vertices];&#xD;
           If[&#xD;
            (y &amp;gt; interfaceCenter[[2]] - buf &amp;amp;&amp;amp;&#xD;
                y &amp;lt; interfaceCenter[[2]] + buf)  ||&#xD;
             (y &amp;lt; bt + 1.5 buf &amp;amp;&amp;amp;&#xD;
                x &amp;lt; lf + 1.5 buf)&#xD;
            , area &amp;gt; 0.0000125, area &amp;gt; 0.01&#xD;
            ]&#xD;
           ]&#xD;
          ]&#xD;
        ];&#xD;
      &#xD;
      mDic = &amp;lt;|&#xD;
        height -&amp;gt; h,&#xD;
        length -&amp;gt; l,&#xD;
        ratio -&amp;gt; rat,&#xD;
        gapfactor -&amp;gt; gf,&#xD;
        r -&amp;gt; bR,&#xD;
        top -&amp;gt; tp,&#xD;
        bot -&amp;gt; bt,&#xD;
        left -&amp;gt; lf,&#xD;
        right -&amp;gt; rt,&#xD;
        intl -&amp;gt; interfacel,&#xD;
        intg -&amp;gt; interfaceg,&#xD;
        intcx -&amp;gt; interfaceCenter[[1]],&#xD;
        intcy -&amp;gt; interfaceCenter[[2]],&#xD;
        buffer -&amp;gt; buf,&#xD;
        mesh -&amp;gt; msh,&#xD;
        bmesh -&amp;gt; bmsh,&#xD;
        bounds -&amp;gt; bnds,&#xD;
        regs -&amp;gt; rgs,&#xD;
        cfg -&amp;gt; cf&#xD;
        |&amp;gt;;&#xD;
      mDic]&#xD;
    &#xD;
    Options[meshfn] = {height -&amp;gt; 1, length -&amp;gt; 1, ratio -&amp;gt; 0.5, &#xD;
       gapfactor -&amp;gt; 100, config -&amp;gt; &amp;#034;Co&amp;#034;};&#xD;
    meshfn[OptionsPattern[]] := &#xD;
     makeMesh[OptionValue[height], OptionValue[length],&#xD;
      OptionValue[ratio], OptionValue[gapfactor], OptionValue[config]]&#xD;
&#xD;
We can create a mesh instance of a co-current flow case by invoking the meshfn\[\]. I will color the liquid inlet $\color{Green}{Green}$, the gas inlet $\color{Red}{Red}$ and the bottom boundary $\color{Orange}{Orange}$ (the rest of the boundaries are default).&#xD;
&#xD;
    mDicCo = meshfn[config -&amp;gt; &amp;#034;Co&amp;#034;];&#xD;
    mDicCo[bmesh][&#xD;
     &amp;#034;Wireframe&amp;#034;[&amp;#034;MeshElementMarkerStyle&amp;#034; -&amp;gt; Blue, &#xD;
      &amp;#034;MeshElementStyle&amp;#034; -&amp;gt; {Green, Red, Orange, Black}, &#xD;
      ImageSize -&amp;gt; Large]]&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
By setting the optional config parameter to &amp;#034;Counter&amp;#034;, we can easily generate a counter-current case as shown below (note how the gas inlet shifted to the right side.&#xD;
&#xD;
    mDic = meshfn[config -&amp;gt; &amp;#034;Counter&amp;#034;];&#xD;
    mDic[bmesh][&#xD;
     &amp;#034;Wireframe&amp;#034;[&amp;#034;MeshElementMarkerStyle&amp;#034; -&amp;gt; Blue, &#xD;
      &amp;#034;MeshElementStyle&amp;#034; -&amp;gt; {Green, Red, Orange, Black}, &#xD;
      ImageSize -&amp;gt; Large]]&#xD;
&#xD;
![enter image description here][12]&#xD;
&#xD;
For the co-current case, the bottom wall and the gas inlet have inconsistent Dirichlet conditions.  To reduce the effect, I refined the mesh in the lower left corner as shown below.&#xD;
&#xD;
![enter image description here][13]&#xD;
&#xD;
I also meshed the interface region finely.&#xD;
&#xD;
![enter image description here][14]&#xD;
&#xD;
Sometimes it can get confusing to setup alternative boundaries.  To visualize the coordinate IDs, you could use something like:&#xD;
&#xD;
    With[{pts = mDic[bmesh][&amp;#034;Coordinates&amp;#034;]}, &#xD;
     Graphics[{Opacity[1], Black, &#xD;
       GraphicsComplex[pts, &#xD;
        Text[Style[ToString[#], Background -&amp;gt; White, 12], #] &amp;amp; /@ &#xD;
         Range[Length[pts]]]}]]&#xD;
&#xD;
![enter image description here][15]&#xD;
&#xD;
## Solving and Visualization&#xD;
&#xD;
I have created a module that will solve and visualize depending on the mesh type (co-flow or counter-flow).  Hopefully, it is well enough commented that further discussion is not needed.&#xD;
&#xD;
    model[md_, kequil_, d_, pel_, peg_, title_] := &#xD;
      Module[{n, pecletgas, por, vl, vg, fac, facg, coefl, coefg, &#xD;
        dcliquidinletliquid, dcliquidinletgas, dcinletgas, &#xD;
        dcgasinletliquid, dcgasinletgas, dcbottomliquid, dcbottomgas, &#xD;
        eqnliquid, eqngas, eqns, ifun, pltl, pltint, pltg, pltarr, sz, &#xD;
        grid, lf, rt, tp, bt, interfaceg, interfacel, interfaceCenterY, &#xD;
        plrng, arrequil, arrdiff, arrgas, &#xD;
        arrliq},&#xD;
       (*localize Mesh Dict Values*)lf = md[left];&#xD;
       rt = md[right];&#xD;
       tp = md[top];&#xD;
       bt = md[bot];&#xD;
       interfaceg = md[intg];&#xD;
       interfacel = md[intl];&#xD;
       interfaceCenterY = md[intcy];&#xD;
       (*Must swtich gas flow direction for counter-flow*)&#xD;
       pecletgas = If[md[cfg] == &amp;#034;Co&amp;#034;, peg, -peg];&#xD;
       (*Dimensionless Mass Transfer Coefficient in Interphase Region*)&#xD;
       n = 10000;&#xD;
       (*&amp;#034;Porosity&amp;#034; to weight concentration in interphase*)&#xD;
       por[y_, intg_, intl_] := (y - intg)/(intl - intg);&#xD;
       (*Region Dependent Properties with Piecewise \&#xD;
    Functions*)(*velocity*)(*Liquid parabolic profile*)&#xD;
       vl = Evaluate[&#xD;
         Piecewise[{{{pel d (1 - (y/md[r])^2), 0}, &#xD;
            ElementMarker == md[regs][liquid]}, {{pecletgas, 0}, &#xD;
            ElementMarker == md[regs][gas]}, {{0, 0}, True}}]];&#xD;
       (*Gas Uniform Velocity*)&#xD;
       vg = Evaluate[&#xD;
         Piecewise[{{{pecletgas, 0}, &#xD;
            ElementMarker == md[regs][gas]}, {{pel d (1 - (y/md[r])^2), &#xD;
             0}, ElementMarker == md[regs][liquid]}, {{0, 0}, True}}]];&#xD;
       (*fac switches on mass transfer coefficient in interphase*)&#xD;
       fac = Evaluate[If[ElementMarker == md[regs][interface], n, 0]];&#xD;
       (*diffusion coefficients*)(*Liquid*)&#xD;
       coefl = Evaluate[&#xD;
         Piecewise[{{d, ElementMarker == md[regs][liquid]}, {1, &#xD;
            ElementMarker == md[regs][interface]}, {d/1000000, &#xD;
            True} (*Effectively No Flux at Interface*)}]];&#xD;
       (*Gas*)coefg = &#xD;
        Evaluate[&#xD;
         Piecewise[{{1, ElementMarker == md[regs][gas]}, {1, &#xD;
            ElementMarker == md[regs][interface]}, {d/1000000, &#xD;
            True} (*Effectively No Flux at Interface*)}]];&#xD;
       (*Dirichlet Conditions for Liquid at Inlets*)&#xD;
       dcliquidinletliquid = &#xD;
        DirichletCondition[cl[x, y] == 0, &#xD;
         ElementMarker == md[bounds][liquidinlet]];&#xD;
       dcliquidinletgas = &#xD;
        DirichletCondition[cg[x, y] == 0, &#xD;
         ElementMarker == md[bounds][liquidinlet]];&#xD;
       dcgasinletliquid = &#xD;
        DirichletCondition[cl[x, y] == 0, &#xD;
         ElementMarker == md[bounds][gasinlet]];&#xD;
       (*Conditional BCs for gas dependent on configuration*)&#xD;
       dcgasinletgas := &#xD;
        DirichletCondition[cg[x, y] == 0, &#xD;
          ElementMarker == md[bounds][gasinlet]] /; md[cfg] == &amp;#034;Co&amp;#034;;&#xD;
       dcgasinletgas := &#xD;
        DirichletCondition[cg[x, y] == 1, &#xD;
          ElementMarker == md[bounds][gasinlet]] /; md[cfg] == &amp;#034;Counter&amp;#034;;&#xD;
       (*Dirichlet Conditions for the Bottom Wall*)&#xD;
       dcbottomliquid = &#xD;
        DirichletCondition[cl[x, y] == 0, &#xD;
         ElementMarker == md[bounds][bottom]];&#xD;
       dcbottomgas = &#xD;
        DirichletCondition[cg[x, y] == 1, &#xD;
         ElementMarker == md[bounds][bottom]];&#xD;
       (*Balance Equations for Gas and Liquid Concentrations*)&#xD;
       eqnliquid = &#xD;
        vl.Inactive[Grad][cl[x, y], {x, y}] - &#xD;
          coefl Inactive[Laplacian][cl[x, y], {x, y}] - &#xD;
          fac (kequil cg[x, y] - cl[x, y]) == 0;&#xD;
       eqngas = &#xD;
        vg.Inactive[Grad][cg[x, y], {x, y}] - &#xD;
          coefg Inactive[Laplacian][cg[x, y], {x, y}] + &#xD;
          fac (kequil cg[x, y] - cl[x, y]) == 0;&#xD;
       (*Equations to be solved depending on configuration*)&#xD;
       eqns := {eqnliquid, eqngas, dcliquidinletliquid, dcliquidinletgas, &#xD;
          dcgasinletliquid, dcgasinletgas, dcbottomliquid, dcbottomgas} /;&#xD;
          md[cfg] == &amp;#034;Co&amp;#034;;&#xD;
       eqns := {eqnliquid, eqngas, dcliquidinletliquid, dcliquidinletgas, &#xD;
          dcgasinletliquid, dcgasinletgas} /; md[cfg] == &amp;#034;Counter&amp;#034;;&#xD;
       (*Solve the PDE*)&#xD;
       ifun = NDSolveValue[eqns, {cl, cg}, {x, y} \[Element] md[mesh]];&#xD;
       (*Visualizations*)(*Create Arrows to represent magnitude of \&#xD;
    dimensionless groups*)(*Equilibrium Arrow*)&#xD;
       arrequil = {CapForm[&amp;#034;Square&amp;#034;], Red, Arrowheads[0.03], &#xD;
         Arrow[Tube[{{1 - 0.0125, 0.025, 1}, {1 - 0.0125, 0.025, kequil}},&#xD;
            0.005], -0.03]};&#xD;
       (*Diffusion Arrow*)&#xD;
       arrdiff = {Darker[Green, 1/2], &#xD;
         Arrowheads[0.03, Appearance -&amp;gt; &amp;#034;Flat&amp;#034;], &#xD;
         Arrow[Tube[{{-0.025, 0.0, 0.0 .025}, {-0.025, &#xD;
             0.5 (1 + Log10[d]/4), 0.025}}, 0.005], -0.03]};&#xD;
       (*Liquid Peclet Arrow*)&#xD;
       arrliq = {Blue, Dashed, Arrowheads[1.5 0.03], &#xD;
         Arrow[Tube[{{0.0, mDic[top] + 0.025, 0.035}, {pel/50, &#xD;
             mDic[top] + 0.025, 0.035}}, 1.5 0.005], -0.03 1.5]};&#xD;
       (*Conditional Gas Peclet Arrow*)&#xD;
       arrgas := {Black, Dashed, Arrowheads[1.5 0.03], &#xD;
          Arrow[Tube[{{0.0, mDic[bot], 1.035}, {peg/50, mDic[bot], &#xD;
              1.035}}, 1.5 0.005], -0.03 1.5]} /; md[cfg] == &amp;#034;Co&amp;#034;;&#xD;
       arrgas := {Black, Dashed, Arrowheads[1.5 0.03], &#xD;
          Arrow[Tube[{{mDic[right], mDic[bot], &#xD;
              1.035}, {mDic[right] - peg/50, mDic[bot], 1.035}}, &#xD;
            1.5 0.005], -0.03 1.5]} /; md[cfg] == &amp;#034;Counter&amp;#034;;&#xD;
       (*Set up plots*)(*Common plot options*)&#xD;
       plrng = {{lf, rt}, {bt, tp}, {0, 1}};&#xD;
       SetOptions[Plot3D, PlotRange -&amp;gt; plrng, PlotPoints -&amp;gt; {200, 200}, &#xD;
        ColorFunction -&amp;gt; &#xD;
         Function[{x, y, z}, Directive[ColorData[&amp;#034;DarkBands&amp;#034;][z]]], &#xD;
        ColorFunctionScaling -&amp;gt; False, MeshFunctions -&amp;gt; {#3 &amp;amp;}, &#xD;
        Mesh -&amp;gt; 18, AxesLabel -&amp;gt; Automatic, ImageSize -&amp;gt; Large];&#xD;
       (*Liquid Plot*)&#xD;
       pltl = Plot3D[ifun[[1]][x, y], {x, lf, rt}, {y, interfacel, tp}, &#xD;
         MeshStyle -&amp;gt; {Black, Thick}];&#xD;
       (*Interface region Plot*)&#xD;
       pltint = &#xD;
        Plot3D[ifun[[2]][x, y] (1 - por[y, interfaceg, interfacel]) + &#xD;
          por[y, interfaceg, interfacel] ifun[[1]][x, y], {x, lf, rt}, {y,&#xD;
           interfaceg, interfacel}, &#xD;
         MeshStyle -&amp;gt; {DotDashed, Black, Thick}];&#xD;
       (*Gas Plot*)&#xD;
       pltg = Plot3D[ifun[[2]][x, y], {x, lf, rt}, {y, bt, interfaceg}, &#xD;
         MeshStyle -&amp;gt; {Dashed, Black, Thick}];&#xD;
       (*Grid Plot*)sz = 300;&#xD;
       grid = &#xD;
        Grid[{{Show[{pltl, pltint, pltg}, &#xD;
            ViewProjection -&amp;gt; &amp;#034;Orthographic&amp;#034;, ViewPoint -&amp;gt; Front, &#xD;
            ImageSize -&amp;gt; sz, Background -&amp;gt; RGBColor[0.84`, 0.92`, 1.`], &#xD;
            Boxed -&amp;gt; False], &#xD;
           Show[{pltl, pltint, pltg}, ViewProjection -&amp;gt; &amp;#034;Orthographic&amp;#034;, &#xD;
            ViewPoint -&amp;gt; Left, ImageSize -&amp;gt; sz, &#xD;
            Background -&amp;gt; RGBColor[0.84`, 0.92`, 1.`], &#xD;
            Boxed -&amp;gt; False]}, {Show[{pltl, pltint, pltg}, &#xD;
            ViewProjection -&amp;gt; &amp;#034;Orthographic&amp;#034;, ViewPoint -&amp;gt; Top, &#xD;
            ImageSize -&amp;gt; sz, Background -&amp;gt; RGBColor[0.84`, 0.92`, 1.`], &#xD;
            Boxed -&amp;gt; False], &#xD;
           Show[{pltl, pltint, pltg}, ViewProjection -&amp;gt; &amp;#034;Perspective&amp;#034;, &#xD;
            ViewPoint -&amp;gt; {Above, Left, Back}, ImageSize -&amp;gt; sz, &#xD;
            Background -&amp;gt; RGBColor[0.84`, 0.92`, 1.`], Boxed -&amp;gt; False]}}, &#xD;
         Dividers -&amp;gt; Center];&#xD;
       (*Reset Plot Options to Default*)&#xD;
       SetOptions[Plot3D, PlotStyle -&amp;gt; Automatic];&#xD;
       pltarr = &#xD;
        Grid[{{Text[Style[title, Blue, Italic, 24]]}, {Style[&#xD;
            StringForm[&#xD;
             &amp;#034;\!\(\*SubscriptBox[\(K\), \(C\)]\)=``, \[Delta]=``, \&#xD;
    \!\(\*SubscriptBox[\(Pe\), \(L\)]\)=``, and \&#xD;
    \!\(\*SubscriptBox[\(Pe\), \(G\)]\)=``&amp;#034;, &#xD;
             NumberForm[kequil, {3, 2}, NumberPadding -&amp;gt; {&amp;#034; &amp;#034;, &amp;#034;0&amp;#034;}], &#xD;
             NumberForm[d, {5, 4}, NumberPadding -&amp;gt; {&amp;#034; &amp;#034;, &amp;#034;0&amp;#034;}], &#xD;
             NumberForm[pel, {2, 1}, NumberPadding -&amp;gt; {&amp;#034; &amp;#034;, &amp;#034;0&amp;#034;}], &#xD;
             NumberForm[peg, {2, 1}, NumberPadding -&amp;gt; {&amp;#034; &amp;#034;, &amp;#034;0&amp;#034;}]], &#xD;
            18]}, {Show[{pltl, pltint, pltg, &#xD;
             Graphics3D[{arrequil, arrdiff, arrliq, arrgas}](*,arrequil,&#xD;
             arrdiff,arrliq,arrgas*)}, ViewProjection -&amp;gt; &amp;#034;Perspective&amp;#034;, &#xD;
            ViewPoint -&amp;gt; {Above, Left, Back}, ImageSize -&amp;gt; 640, &#xD;
            Background -&amp;gt; RGBColor[0.84`, 0.92`, 1.`], Boxed -&amp;gt; False, &#xD;
            PlotRange -&amp;gt; {{md[left] - 0.05, md[right]}, {md[bot], &#xD;
               md[top] + 0.05}, {0, 1 + 0.1}}]}}];&#xD;
       (*Return values*){ifun, {pltl, pltint, pltg}, pltarr, grid}];&#xD;
    &#xD;
    Options[modelfn] = {md -&amp;gt; mDic, k -&amp;gt; 0.5, dratio -&amp;gt; 1, pel -&amp;gt; 50, &#xD;
       peg -&amp;gt; 50, title -&amp;gt; &amp;#034;Test&amp;#034;};&#xD;
    modelfn[OptionsPattern[]] := &#xD;
     model[OptionValue[md], OptionValue[k], OptionValue[dratio], &#xD;
      OptionValue[pel], OptionValue[peg], OptionValue[title]]&#xD;
&#xD;
## Testing of Meshing and Solving Modules&#xD;
Now, that we wrapped our meshing and solving work flow into modules, I will demonstrate how to create an instance of a simulation.&#xD;
&#xD;
    (* Create a Co-Flow Mesh *)&#xD;
    mDic = meshfn[config -&amp;gt; &amp;#034;Co&amp;#034;];&#xD;
    (* Simulate and return results *)&#xD;
    res = modelfn[md -&amp;gt; mDic, k -&amp;gt; 0.5, dratio -&amp;gt; 0.1, pel -&amp;gt; 10, &#xD;
       peg -&amp;gt; 5, title -&amp;gt; &amp;#034;Co-Flow&amp;#034;];&#xD;
&#xD;
To visualize a 3D plot with arrows representing the magnitude of dimensionless parameters, we access the third part of the results list.&#xD;
&#xD;
    res[[3]]&#xD;
&#xD;
![enter image description here][16]&#xD;
&#xD;
The solid lines, dashed lines, and dashed-dotted lines represent contours of species concentration in the liquid, gas, and interphase regions, respectively.  The $\color{Red}{Red}$ arrow is proportional to (1-K), the $\color{Green}{Green}$ arrow is proportional to the log of the diffusion ratio $\delta$, the $\color{Blue}{Blue}$ arrow is proportional to $Pe_L$, and the $\color{Black}{Black}$ arrow is proportional to $Pe_G$.  Multiple views are contained in part 4 of the results list.&#xD;
&#xD;
    res[[4]]&#xD;
&#xD;
![enter image description here][17]&#xD;
&#xD;
## Validation (Comparison to another code)&#xD;
&#xD;
Before continuing, it is always good practice to validate your model versus experiment or at least another code.  The other code supports a partition conditions for the concentration jump so that I do not need to create an interface layer.  The results are shown below:&#xD;
&#xD;
![enter image description here][18]&#xD;
&#xD;
The contour plots look very similar to the image in the lower left corner of the grid plot.  To be more quantitative, I have highlighted contours at approximately y=-0.15 and y=0.05 in the gas and liquid layers at x=1 corresponding to concentrations of 0.68 and 0.28, respectively.  The first part of the results list returns an interpolation function of the liquid and gas species.  We can see that we are within a percent of the other code, which is reasonable given that the interface layer is about 1% of the domain.  This check gives me good confidence that my model is not too wrong and that I can start to make it useful (i.e., exercising the model by changing parameters). &#xD;
&#xD;
    res[[1]][[2]][1, -0.15] (*0.6769985984321076`*)&#xD;
    res[[1]][[1]][1, 0.05] (* 0.27374616012596314`*)&#xD;
&#xD;
# Generating Animations&#xD;
&#xD;
I like to animate.  For me, animations are the best way to demonstrate how a system evolves as a function of time or parameter changes. We can export an animated gif file to study the effects of dimensionless parameter changes for both flow configurations as shown in the following code. It will take about 30 minutes per animation and about 5 GB of RAM. Undoubtedly, this code could be optimized for speed and memory usage, but you still can create a dozen animations while you sleep.&#xD;
&#xD;
    SetDirectory[NotebookDirectory[]];&#xD;
    &#xD;
    f = ((#1 - #2)/(#3 - #2)) &amp;amp;; (* Scale for progress bar *)&#xD;
    &#xD;
    mDic = meshfn[config -&amp;gt; &amp;#034;Counter&amp;#034;]; (* Create Mesh Instance *)&#xD;
        &#xD;
    Export[&amp;#034;CounterFlow.gif&amp;#034;,&#xD;
     Monitor[&#xD;
      Table[&#xD;
       modelfn[md -&amp;gt; mDic, k -&amp;gt; kc, dratio -&amp;gt; 1, pel -&amp;gt; 0, peg -&amp;gt; 0, &#xD;
         title -&amp;gt; &amp;#034;Counter-Flow&amp;#034;][[3]], {kc, 1, 0.01, -0.01}&#xD;
       	],&#xD;
      Grid[&#xD;
       	{{&amp;#034;Total progress:&amp;#034;, &#xD;
         ProgressIndicator[&#xD;
          Dynamic[f[kc, 1, &#xD;
            0.01, -0.01]]]}, {&amp;#034;\!\(\*SubscriptBox[\(K\), \(C\)]\)=&amp;#034;, \&#xD;
    {Dynamic@kc}}}]&#xD;
      	],&#xD;
     &amp;#034;AnimationRepetitions&amp;#034; -&amp;gt; \[Infinity]]&#xD;
&#xD;
# Examples&#xD;
&#xD;
I combined the co- (left) and counter-current (right) gif animations for several cases below. Péclet numbers approaching 100 start to look uninteresting visually (all the action is very close to the interface).  This should inform the user that perhaps another model is in order with new assumptions to study the small-scale behavior near the interface.&#xD;
&#xD;
## Changing the Equilibrium Constant @ No Flow&#xD;
&#xD;
![enter image description here][19]&#xD;
&#xD;
As the equilibrium constant, $K$, reduces, the jump condition increases.&#xD;
&#xD;
## Changing the Diffusion Ratio $\delta$ @ No Flow&#xD;
&#xD;
![enter image description here][20]&#xD;
&#xD;
As the liquid-gas diffusion ratio, $\delta$, decreases, the concentration in the gas layer increases.  We also see that the solution does not change much for $\delta&amp;lt;0.01$.&#xD;
## Changing  $Pe_L$  @ No Gas Flow&#xD;
&#xD;
![enter image description here][21]&#xD;
&#xD;
As $Pe_L$ increases, the concentration gradient increases at the interface.&#xD;
## Changing  $Pe_G$  @ No Liquid Flow&#xD;
&#xD;
![enter image description here][22]&#xD;
&#xD;
As $Pe_G$ increases, we see the concentration in the liquid layer decrease for co-flow and increase for counter-current flow. This should make sense since the inlet concentration for co-flow is 0 and 1 for counter-current flow. &#xD;
&#xD;
## Changing the Diffusion Ratio $\delta$ @ Middle Conditions&#xD;
&#xD;
![enter image description here][23]&#xD;
&#xD;
Again, we do not see much change for $\delta&amp;lt;0.01$.  One may have noticed that the concentration in the liquid layer goes up as the diffusion coefficient ratio goes down, which may, at first, seem counterintuitive.  The reason for this behavior is that the dimensionless velocity in the liquid layer depends on both $Pe_L$ and $\delta$ so it decreases with decreasing $\delta$. &#xD;
&#xD;
# Summary&#xD;
&#xD;
- Constructed an FEM model in the Wolfram Language to study concentration jump conditions in interphase mass transfer.&#xD;
- Results compare favorably to another code designed to handle jump conditions.&#xD;
- Showed several examples of the effect of dimensionless parameter changes on two model flow configurations.&#xD;
- Notebook provided.&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=varyKlv0gv0.gif&amp;amp;userId=1402928&#xD;
  [2]: http://appliedchem.unideb.hu/Muvtan/Transport%20Processes%20and%20Unit%20Operations,%20Third%20Edition.pdf&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ConcJumps.png&amp;amp;userId=1402928&#xD;
  [4]: https://reference.wolfram.com/language/ref/DSolve.html&#xD;
  [5]: https://ac.els-cdn.com/S0307904X07000601/1-s2.0-S0307904X07000601-main.pdf?_tid=adb2e542-50f1-44ce-ad9f-54ffaaa83bcb&amp;amp;acdnat=1539987146_3e6ce710d8016d91587f466be8e4ada7&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=AbsorptionModel.png&amp;amp;userId=1402928&#xD;
  [7]: https://community.wolfram.com//c/portal/getImageAttachment?filename=PMSystemDescription.png&amp;amp;userId=1402928&#xD;
  [8]: https://community.wolfram.com//c/portal/getImageAttachment?filename=AbsorptionSystem.png&amp;amp;userId=1402928&#xD;
  [9]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Dimensions.png&amp;amp;userId=1402928&#xD;
  [10]: https://community.wolfram.com//c/portal/getImageAttachment?filename=AbsorptionSystem2.png&amp;amp;userId=1402928&#xD;
  [11]: https://community.wolfram.com//c/portal/getImageAttachment?filename=CoCurrentBoundaryMesh.png&amp;amp;userId=1402928&#xD;
  [12]: https://community.wolfram.com//c/portal/getImageAttachment?filename=CounterCurrentBoundaryMesh.png&amp;amp;userId=1402928&#xD;
  [13]: https://community.wolfram.com//c/portal/getImageAttachment?filename=CornerRefinement.png&amp;amp;userId=1402928&#xD;
  [14]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Interface.png&amp;amp;userId=1402928&#xD;
  [15]: https://community.wolfram.com//c/portal/getImageAttachment?filename=CoordIDs.png&amp;amp;userId=1402928&#xD;
  [16]: https://community.wolfram.com//c/portal/getImageAttachment?filename=testresult3.png&amp;amp;userId=1402928&#xD;
  [17]: https://community.wolfram.com//c/portal/getImageAttachment?filename=TestGrid.png&amp;amp;userId=1402928&#xD;
  [18]: https://community.wolfram.com//c/portal/getImageAttachment?filename=comsolresults.png&amp;amp;userId=1402928&#xD;
  [19]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Cmb_varyKld1v0gv0.gif&amp;amp;userId=1402928&#xD;
  [20]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Cmb_varydelta.gif&amp;amp;userId=1402928&#xD;
  [21]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Cmb_varyliqvelocity.gif&amp;amp;userId=1402928&#xD;
  [22]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Cmb_varygasvelocity.gif&amp;amp;userId=1402928&#xD;
  [23]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Cmb_varydeltalv5gv5.gif&amp;amp;userId=1402928</description>
    <dc:creator>Tim Laska</dc:creator>
    <dc:date>2018-11-15T19:31:17Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/176000">
    <title>Export as 3D file type STL for 3D printing</title>
    <link>https://community.wolfram.com/groups/-/m/t/176000</link>
    <description>hi all,&#xD;
&#xD;
i have a ContourPlot of an equation and would like to export it as a 3D file type.&#xD;
[mcode]ContourPlot3D[ x^2 + y^2 - x^2*z + y^2*z + z^2 - 1 == 0, {x, -3, 3}, {y, -3,   3}, {z, -3, 3}][/mcode]&#xD;
can anyone tell me what to add to something like this in order to get it out as a 3D file but also /where/ i should expect this file to go?&#xD;
&#xD;
i am searching the help database and must admit that i sometimes have to be shown how to do these things since the pickorder and/or the syntax sometimes is hard for me to figure out.&#xD;
&#xD;
thanks in advance for any help.&#xD;
&#xD;
Jon</description>
    <dc:creator>Jonathan Chertok</dc:creator>
    <dc:date>2013-12-28T19:25:48Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/126143">
    <title>Fitting system of Differential equations to a dataset</title>
    <link>https://community.wolfram.com/groups/-/m/t/126143</link>
    <description>Hello everyone! I am trying to model the kinetics of an experimental system. I am trying to find the values of 3 variables in a system of differential equations by fitting them to an experimental data set. I have values for &amp;#034;g&amp;#034; as a function of time and I would like to find the values of &amp;#034;k1&amp;#034;, &amp;#034;k2&amp;#034;, and &amp;#034;k3&amp;#034; that provide the best fit to my data with minimun and maximum value constraints. The values of the k&amp;#039;s in my example below are the correct values, as I have set this up to learn how so I can apply it to a more complex system. I&amp;#039;ve tried to learn through the online resources of Mathematica but I am having trouble getting it to work for me. [b]So in short, I would like to find the values of k1, k2, and k3 that solve my set of equations to best fit my experimental values of g. [/b]

Notebook below: [mcode]k1 = 20;
k2 = 10;
k3 = 2;
totaltime = 3;[/mcode][mcode]dataset1 = {{0, 0}, {0.15, 0.271161}, {0.3, 0.525314}, {0.45, 
    0.68284}, {0.6, 0.782049}, {0.75, 0.846992}, {0.9, 
    0.890934}, {1.05, 0.921414}, {1.5, 0.969472}};[/mcode][mcode]solution = NDSolve[
   {a&amp;#039;[t] == -k1*a[t]*b[t],
    b&amp;#039;[t] == -k1*a[t]*b[t],
    c&amp;#039;[t] == k1*a[t]*b[t] - k3*c[t]*f[t],
    d&amp;#039;[t] == -k2*d[t]*e[t],
    e&amp;#039;[t] == -k2*d[t]*e[t],
    f&amp;#039;[t] == k2*d[t]*e[t] - k3*c[t]*f[t],
    g&amp;#039;[t] == k3*c[t]*f[t],
    a[0] == 5,
    b[0] == 2,
    c[0] == 0,
    d[0] == 2,
    e[0] == 1,
    f[0] == 0,
    g[0] == 0},
   {a, b, c, d, e, f, g},
   {t, 0, totaltime},
   MaxSteps -&amp;gt; Infinity];
Show[{ListPlot[dataset1, PlotRange -&amp;gt; {{0, 1.6}, {0, 1}}, 
   PlotRangeClipping -&amp;gt; True]}, 
 Plot[Evaluate[{f[t], g[t]} /. solution],
  {t, 0, totaltime}, PlotLegends -&amp;gt; {&amp;#034;f&amp;#034;, &amp;#034;g&amp;#034;}]][/mcode]</description>
    <dc:creator>A Magyar</dc:creator>
    <dc:date>2013-09-18T16:34:21Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/534384">
    <title>Using Findfit</title>
    <link>https://community.wolfram.com/groups/-/m/t/534384</link>
    <description>I am trying to find a,b,c from this equation using an array of x and y,&#xD;
&#xD;
![enter image description here][1]&#xD;
    &#xD;
This is my input in mathematica,&#xD;
&#xD;
    FindFit[{{171.29, 6}, {171.63, 12.1}, {171.86, 24.2}, {172.06, &#xD;
           48.3}}, {x == (((sqrt (a^2 + 8 a y) - a) (b - c))/(4 y)) + c}, {a, &#xD;
          b, c}, {x, y}]&#xD;
    &#xD;
But I get this message, FindFit::fitc: Number of coordinates (1) is not equal to the number of variables (2). &amp;gt;&amp;gt;&#xD;
&#xD;
Please advice how to solve for a,b,c&#xD;
&#xD;
&#xD;
  &#xD;
&#xD;
&#xD;
  [1]: /c/portal/getImageAttachment?filename=5562equation.png&amp;amp;userId=534369</description>
    <dc:creator>Damodaran Achary</dc:creator>
    <dc:date>2015-07-22T22:09:16Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/140887">
    <title>How to plot {x,y,z,i} data?</title>
    <link>https://community.wolfram.com/groups/-/m/t/140887</link>
    <description>Hello there, I have data (in a .dat file) which consists of four columns. x, y, z are coordinates in 3D and i which is the measured intensity at the point defined by xyz. The data is continuous and should give some form of a 3D peak type shape. Thanks!</description>
    <dc:creator>Anna Regoutz</dc:creator>
    <dc:date>2013-10-18T13:31:09Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/135497">
    <title>How can I mirror the values of a matrix about its diagonal?</title>
    <link>https://community.wolfram.com/groups/-/m/t/135497</link>
    <description>So I am generating large matrices (the smallest is 48x48) but only one half of the matrix is viable. Unltimately, what I need is a matrix that is symmetric about the diagonal. At the moment, I am just copying and pasting the values that I need, which is highly impractical as the size of the matrix scales up. The function I am using to generate the values is based off of the difference between the row and column, and so it generates different results when this value is negative verses positive. It also doesnt help to just wrap the difference in an Abs[], for whatever reason (I will post the code at the bottom just in case their is a way to get symmetry without messing with the matrices). I havent really been able to think of a way to do this, but what I would like to be able to do is just redefine all of the values on one half of the diagonal using the &amp;#034;correct&amp;#034; values on the other side of the diagonal. In this particular instance, the &amp;#034;correct&amp;#034; values are those in which m&amp;gt;n in the m x n matrix. 
[mcode]pA[ j_, v_] := -I*(-1)^j*(2*DeA*MA)^(1/2)*K[ j, v ]

K[ j_, v_ ] := ((Gamma[ k - v - j ]*Factorial[ v + j ]*(k - 2*v - 2*j - 1)*(k - 2*v - 1))/(Gamma[ k - v ]*Factorial[ v ]))^(1/2)*(1/ k)

k := (4*DeA)/(\[HBar]*\[Omega]eA)[/mcode]
All of those values are then used to generate the matrix, which I have called matpA:
[mcode]matpA := Table[pA[((m - 1) - (n - 1)), (n - 1)], {m, vmaxA}, {n, vmaxA}][/mcode]
Thanks so much for taking the time to read this and for any help you can provide!</description>
    <dc:creator>Cole Rodman</dc:creator>
    <dc:date>2013-10-07T20:48:05Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/172875">
    <title>Distance between 2 flat molecules</title>
    <link>https://community.wolfram.com/groups/-/m/t/172875</link>
    <description>Hi,&#xD;
 do you have any idea how to measure the distance between the two planes? I am a new user with Mathematica and your help will be greatly appreciated.&#xD;
&#xD;
[mcode]data1 = {{5.086735, -2.640504,&#xD;
    4.650624}, {6.227440, -2.477485, 3.843544}, {6.160519, -1.731605,&#xD;
    2.649288}, {4.941969, -1.164990, 2.267181}, {3.799611, -1.315889,&#xD;
    3.093711}, {3.864651, -2.054553, 4.284675}, {4.609149, -0.320793,&#xD;
    1.036262}, {3.147213, 0.034489, 1.303689}, {2.295200, 0.817536,&#xD;
    0.531891}, {0.950277, 1.010999, 0.934789}, {0.504240, 0.379798,&#xD;
    2.123730}, {1.354565, -0.416580, 2.898054}, {2.686409, -0.582108,&#xD;
    2.489055}, {0.024258, 1.821306, 0.114273}, {-1.353392, 1.513264,&#xD;
    0.069868}, {0.471982, 2.897945, -0.687157}, {-2.233955,&#xD;
    2.208380, -0.751826}, {-0.408676,&#xD;
    3.621409, -1.497147}, {-1.775026,&#xD;
    3.272191, -1.550693}, {-2.675546, 3.957425, -2.411557}};&#xD;
&#xD;
&#xD;
In[9]:= Plane1 = Fit[data1, {1, x, y}, {x, y}]&#xD;
Out[9]= 2.18037 - 0.200355 x - 1.20793 y&#xD;
&#xD;
data2 = {{0.989404, -2.326574, -0.675663}, {0.466929, \&#xD;
-2.898174, 0.507492}, {-0.913869, -2.780568,&#xD;
    0.804534}, {-1.736679, -2.093564, -0.078413}, {-1.209589, \&#xD;
-1.521258, -1.260581}, {0.155306, -1.637212, -1.561214},&#xD;
   {-3.234276, -1.809443,&#xD;
    0.054719}, {-3.478451, -0.951209, -1.195212}, {-4.647861, \&#xD;
-0.326679, -1.645893}, {-4.618728, 0.428750, -2.833379}, {-3.433297,&#xD;
    0.549231, -3.579976}, {-2.261558, -0.087363, -3.148840}, \&#xD;
{-2.289342, -0.827551, -1.957816}, {1.326341, -3.595313,&#xD;
    1.453222}, {3.114413, -4.428375, 2.270776}, {2.668207, -3.758639 ,&#xD;
     1.167271}, {1.006758, -4.128596,&#xD;
    2.609730}, {2.180810, -4.675522, 3.140752}};&#xD;
&#xD;
&#xD;
In[16]= Plane2 = Fit[data2, {1, x, y}, {x, y}]&#xD;
Out[16]= -4.19445 - 0.401548 x - 1.7137 y&#xD;
&#xD;
Show[ListPlot3D[data1, PlotStyle -&amp;gt; Red],&#xD;
 ListPlot3D[data2, PlotStyle -&amp;gt; Green],&#xD;
 Plot3D[{Plane1, Plane2}, {x, -7, 7}, {y, -7, 7}]]&#xD;
[/mcode]</description>
    <dc:creator>A Y</dc:creator>
    <dc:date>2013-12-19T19:47:40Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/543579">
    <title>What&amp;#039;s the best way to visualize a 3D scalar field?</title>
    <link>https://community.wolfram.com/groups/-/m/t/543579</link>
    <description>I&amp;#039;m trying to find the best way to visualize a 3D scalar field within Mathemaitca. Specifically, if anyone knows how to generate something akin to a &amp;#034;fog&amp;#034; - so a 3D plot that has heavier shading in regions where the scalar is large. &#xD;
&#xD;
What I&amp;#039;m trying to do is to make an easy way for students in freshmen-level chemistry to visualize the structure of the electron density (a 3D scalar function) around a pair of atoms - i.e. visualizing chemical bonds. I believe that there&amp;#039;s great value in helping students understand how bonds between atoms exist in real space, but few incoming students are comfortable reading common visualization tools such as contour plots. I&amp;#039;ve linked to a simple image of electron density contours in a plane that intersects the nuclei in dinitrogen (N2) and lithium fluoride (LiF), to give you all an idea of what this function looks like:&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
I&amp;#039;ve played around with a number of the available 3D plotting functions I&amp;#039;ve found in the documentation but none of them give me quite what I want.  ContourPlot3D seems to get me the closest to what I want. Using that function I&amp;#039;m able to plot a number of 3D contours and using a very low opacity I visualize a few contour shells but this function&amp;#039;s drastic range of magnitudes makes it hard to find contours that represent the shape of the charge density both where density is low (so far from the atomic nuclei) or quite large (near the nuclei) - see linked image above. So using ContourPlot3D I&amp;#039;m able to see some of the features that I&amp;#039;m after but I feel a smooth representation would make it easier to see the various topological features of this function.&#xD;
&#xD;
Any recommendations are greatly appreciated.&#xD;
&#xD;
&#xD;
  [1]: /c/portal/getImageAttachment?filename=fig7-1.jpg&amp;amp;userId=11733</description>
    <dc:creator>Jonathan Miorelli</dc:creator>
    <dc:date>2015-08-06T18:12:50Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/135901">
    <title>Functional Programming for Non-linear Equations</title>
    <link>https://community.wolfram.com/groups/-/m/t/135901</link>
    <description>Hello All,

I am on a journey to become adept at developing functional programs with Mathematica. I have a short prototype
code that I am using to learn how to convert procedural programs into functional programs and am wondering if anyone
could provide any more advise? Specifically I would like to learn how to write this code in a much more memory friendly manner.
And also learn a better way to run the main loop of the Markov Chain Monte Carlo simulation that minimizes the distance between
 the experimental radioactive decay data and my model. Does anyone have any suggestions on this or how to develop into better functional programmer.

Thanks,
Pat[mcode]Clear[&amp;#034;Global`*&amp;#034;]

texp = {0.2, 2.2, 4.0, 5.0, 6.0, 8.0, 11.0, 15.0, 18.0, 26.0, 33.0, 
   39.0, 45.0};
dexp = {35., 25., 22.1, 17.9, 16.8, 13.7, 12.4, 7.5, 4.9, 4.0, 2.4, 
   1.4, 1.1};
dt = Transpose[{texp, dexp}];
dataPlot = ListPlot[
   dt,
   PlotStyle -&amp;gt; {Red, AbsolutePointSize[6]},
   Frame -&amp;gt; {True, True, False, False}, Axes -&amp;gt; False,
   FrameLabel -&amp;gt; {&amp;#034;Time&amp;#034;, &amp;#034;Species A&amp;#034;},
   LabelStyle -&amp;gt; {FontSize -&amp;gt; 20, FormatType -&amp;gt; Bold},
   RotateLabel -&amp;gt; False,
   ImageSize -&amp;gt; {550}];

runlength = 10000;
sets = runlength/10.;
testing = 10.0;
Mean[dexp];
StandardDeviation[dexp];
stim = 0.01;

chi2[ka_?NumberQ, kb_?NumberQ] := Block[{sol, A, B, c}, sol =
    NDSolve[
      { A&amp;#039;[t] == -ka*A[t],
       B&amp;#039;[t] == ka*A[t] - kb*B[t],
       c&amp;#039;[t] == kb*B[t],
       A[0] == 35.,
       B[0] == 0.,
       c[0] == 0.},
      {A, B, c},
      {t, 0., 100.}][[1]];
   Apply[Plus, (dexp - (A[t] /. sol /. t -&amp;gt; texp))^2]];

DateString[];
RandomSeed[AbsoluteTime[%]]; (* Set Random Seed based on current time *)

Clear[deltaE]
Clear[freeE]
Clear[ka]
Clear[kb]
Clear[u, v]
bestParamSets = {};
thrownsets = {};
(* These arrays are for storage *) 
ka = ConstantArray[0, {runlength}];
kb = ConstantArray[0, {runlength}];
deltaE = ConstantArray[0, {runlength}];
freeE = ConstantArray[0, {runlength}];
v = ConstantArray[0, {runlength}];
u = ConstantArray[0, {runlength}];
decayscore = ConstantArray[0, {runlength}];
(**************************************************)
(******** Starting the Metropolis Algorithm ********)
(**************************************************)

range = 10.0;(* Pick different initial guesses for param. sets *)
weight = 1./10;
ka[[0]] = RandomReal[{0.0, 0.2}];
kb[[0]] = RandomReal[{0.0, 0.2}];
least = 0.0004;
max = 1.000;
decayscore[[0]] = chi2[ka[[0]], kb[[0]]];
beta = 1/.01;


(tbl = Reap[
     Table[(*Open Main For Loop*)
  ka[[i]] = ka[[i - 1]] + weight*ka[[i - 1]]*RandomReal[{-1.0, 1.0}];
  kb[[i]] = kb[[i - 1]] + weight*kb[[i - 1]]*RandomReal[{-1.0, 1.0}];
      (*************************************************)
      (*This is where the evaluation of the parameter sets begins*)
      (*************************************************)

    If[
     least &amp;lt; ka[[i]] &amp;amp;&amp;amp; ka[[i]] &amp;lt; max &amp;amp;&amp;amp;
     least &amp;lt; kb[[i]] &amp;amp;&amp;amp; kb[[i]] &amp;lt; max,
     decayscore[[i]] = chi2[ka[[i]], kb[[i]]];(*This is the function evaluated for each parameter set*)
     deltaE[[i]] = decayscore[[i]] - decayscore[[i - 1]];(*The change in energy for each step*)
     freeE[[i]] = Exp[-beta*deltaE[[i]]];(*This is a free energy associated with each step*)
       v[[i]] = Min[1, freeE[[i]]];
       u[[i]] = RandomReal[{0, 1}];
       (**************************************************)
       (******** Metropolis Selection Algorithm ********)
       (**************************************************)
     If[u[[i]] &amp;lt; v[[i]],(*If u&amp;lt;v always accept that parameter set, else accept with probability u {data}]*);
       ka[[i + 1]] = ka[];
       kb[[i + 1]] = kb[];
     Sow[{True, decayscore[], v[], ka[], kb[], i}],(*bestParamSets*)
       ka[] = ka[[i - 1]];
       kb[] = kb[[i - 1]];
      ],
       ka[] = ka[[i - 1]];
       kb[] = kb[[i - 1]]
      ],
   {i, 1,runlength - 1}]][[2, 1]];
bestParamSets = Cases[tbl, {True, data__} -&amp;gt; {data}];
) // AbsoluteTiming  (*Close Main For Loop How long does this loop take to run?*)[/mcode]</description>
    <dc:creator>Pat Mac</dc:creator>
    <dc:date>2013-10-07T22:38:13Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1575334">
    <title>Get numerical solution of PDE for diffusion at high diffusion rates?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1575334</link>
    <description>I am trying to solve numerically the following PDE with IC and BCs as shown for u(t,x).	&#xD;
&#xD;
    \[PartialD]u/\[PartialD]t = \[PartialD]^2u/\[PartialD]x^2 + p Subscript[(\[PartialD]u/\[PartialD]x), x=0]\[PartialD]u/\[PartialD]x&#xD;
    t = 0, u= 0&#xD;
    x= 0, u= 1&#xD;
    x = 1, u = 0&#xD;
&#xD;
This equation arises in binary diffusion of a species where the diffusion rates are large as opposed to low rates where the second term on the RHS is very small and the PDE becomes identical to the heat conduction equation.  This second term accounts for the convective flow induced by the diffusing species.  The parameter p is related to the surface concentration of the diffusing species (at x = 0).  A closed form solution is available for the case of a semi-infinite region where the last BC becomes x = \[Infinity], u = 0.&#xD;
I tried to use NDSolve and NDSolveValue (code shown below) but I got an error message:&#xD;
NDSolveValue::delpde: Delay partial differential equations are not currently supported by NDSolve.&#xD;
&#xD;
I am unsure if there is (1)a mistake in the code, (2) code is correct but NDSolve cannot provide a solution, or (3) there is a different approach that will work.  Would appreciate any help.  Thanks.&#xD;
&#xD;
    usolh = NDSolveValue[{D[u[t, x], t] == &#xD;
        D[u[t, x], x, x] + 0.5*(D[u[t, x], x] /. x -&amp;gt; 0)*D[u[t, x], x], &#xD;
       u[0, x] == 0, u[t, 0] == 1, u[t, 1] == 0}, &#xD;
      u, {t, 0, 5}, {x, 0, 1}](*we are assuming p=0.5 here*)</description>
    <dc:creator>Rutton Patel</dc:creator>
    <dc:date>2018-12-20T03:09:22Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/745617">
    <title>Balance redox reactions</title>
    <link>https://community.wolfram.com/groups/-/m/t/745617</link>
    <description>Hi.&#xD;
&#xD;
I wonder if I can balance redox reactions, without adding H+, OH- and H2O to the equation. Can I tell the computer, that it is an acidic or an alkaline solution?&#xD;
&#xD;
Example:&#xD;
&#xD;
Balance chemical equation H2O + MnO4^- + SnO2^-2 = MnO2 + SnO3^-2 + OH^-&#xD;
&#xD;
Thanks!</description>
    <dc:creator>Rasmus. C. O. Petersen</dc:creator>
    <dc:date>2015-11-26T16:10:01Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1875994">
    <title>[Notebook] Chaos Game For Clustering of Novel Coronavirus COVID-19</title>
    <link>https://community.wolfram.com/groups/-/m/t/1875994</link>
    <description>*MODERATOR NOTE: coronavirus resources &amp;amp; updates:* https://wolfr.am/coronavirus&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/b2db6345-ed79-4883-8ee2-25b0d16a47e8</description>
    <dc:creator>Mohammad Bahrami</dc:creator>
    <dc:date>2020-02-10T20:01:11Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/255212">
    <title>Evaluating expressions stored in Notebook through Java via Kernel</title>
    <link>https://community.wolfram.com/groups/-/m/t/255212</link>
    <description>Mathematica Kernel can generally open a notebook, and evaluate the functions present in the notebook using UsingFrontEnd Command.

Example: UsingFrontEnd[SelectionEvaluateCreateCell [nb] ]

However, when I try from Java the following Command, no action happens:

m1.evaluate(&amp;#034;UsingFrontEnd[SelectionEvaluateCreateCell [nb] ]&amp;#034;); 
Can anyone please explain how I can evaluate expressions in some notebook file through Java.
 Note: I have tried all options like NotebookEvaluate, SelectionEvaluate, etc. I have also tried different combinations for SelectionMove Command.

Thanks in advance :)</description>
    <dc:creator>ritu1909</dc:creator>
    <dc:date>2014-05-21T12:31:04Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/88228">
    <title>Advice on Wolfram Products for my website</title>
    <link>https://community.wolfram.com/groups/-/m/t/88228</link>
    <description>Hi all,

I&amp;#039;m one of the founders of a soon to be launched website called [url=http://www.ahomeworker.co.za/]http://www.ahomeworker.co.za/[/url] [currently under construction].

This site aims to help &amp;amp; assist learners from all walks of life who are either in High school or Tertiary level with their Mathematics problems &amp;amp; issues here in South Africa.

So far i have discovered these two products [b]Demonstration &amp;amp; Mathworld[/b] that I would like to obtain for my website even though it looks like I&amp;#039;m only scratching the surface here. 

And I would like some advice/tips on what &amp;amp; how to acquire other Wolfram products whether free or needing payment ,that can be preferably incorporated into the site and make the Mathematics subject Fun and Interactive for the learners. At a later stage I would like to grow the program to include other subjects like Physical Science &amp;amp; Geography. </description>
    <dc:creator>sihle mgobozi</dc:creator>
    <dc:date>2013-08-02T13:06:33Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/562253">
    <title>Organize data in table and adding column to data</title>
    <link>https://community.wolfram.com/groups/-/m/t/562253</link>
    <description>Hi guys I would like to get a help organizing my data in table. The attached file is from my Kinetic class. My goals is to organize the data in columns and add new column. I want add 2 new columns: lnK and 1/T ( Arrhenius Equation), and plot lnk vs. 1/T. But I don&amp;#039;t know how to process. I could have done this easily in excel, but my goal is to get used to Mathematica. Please help me on how to do this in the easiest way. &#xD;
Thank everyone!</description>
    <dc:creator>Dodji Cohovi</dc:creator>
    <dc:date>2015-09-09T06:30:29Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/887789">
    <title>Inconsistency in molar mass of Oxygen?</title>
    <link>https://community.wolfram.com/groups/-/m/t/887789</link>
    <description>ChemicalData of O returns the values of water... &#xD;
&#xD;
    In[16]:= ChemicalData[&amp;#034;O&amp;#034;, &amp;#034;MolarMass&amp;#034;]&#xD;
    Out[16]= Quantity[18.0153, (&amp;#034;Grams&amp;#034;)/(&amp;#034;Moles&amp;#034;)]&#xD;
&#xD;
Calculation of MolarMass of Silver bromate (AgBrO3) is also inconsistent: &#xD;
&#xD;
    In[17]:= ChemicalData[&amp;#034;AgBrO3&amp;#034;, &amp;#034;MolarMass&amp;#034;]&#xD;
    Out[17]= Quantity[236.778, (&amp;#034;Grams&amp;#034;)/(&amp;#034;Moles&amp;#034;)]&#xD;
&#xD;
Instead of the actual valur of: 235.771</description>
    <dc:creator>rafael ibanez</dc:creator>
    <dc:date>2016-07-14T15:49:12Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/410320">
    <title>Parallelization and NMinimize</title>
    <link>https://community.wolfram.com/groups/-/m/t/410320</link>
    <description>I have a problem with NMinimize function that does not seem able to use the 8 processors of my machine (16 kernels with hyperthreading) to calculate the function to be minimized. If I calculated for given values of the parameters the same function Mathematica uses several processors. To do that I use ParallelTable function.&#xD;
But when I use NMinimize my computer use only one processor.&#xD;
   &#xD;
here is the function to minimize :&#xD;
&#xD;
    func = Total[&#xD;
      ParallelTable[(mmoyen0[datamhtcor[[j, 1]], datamhtcor[[j, 2]], &#xD;
           datamhtcor[[j, 3]], -10, 0., 2, 2, 2] - &#xD;
          datamhtcor[[j, 4]])^2, {j, 1, Length[datamhtcor]}]]&#xD;
&#xD;
*where mmoyen0 is another function which diagonalize matrices. It depends on variables (b, db, t) and parameters (dist,ee, gx,gy,gz)&#xD;
datamhtcor are a list of experimental data {magnetic field B, small variation of B,Temperature, axial anisotropy, rhombic anisotropy, Lande factor x, Lande factor y, Lande factor x}&#xD;
&#xD;
    SetAttributes[mmoyen0, Listable]&#xD;
    mmoyen0[(b_)?NumericQ, (db_)?NumericQ, (t_)?NumericQ, (dist_)?&#xD;
        NumericQ, (ee_)?NumericQ, (gx_)?NumericQ, (gy_)?NumericQ, (gz_)?&#xD;
        NumericQ] := &#xD;
      Module[{i, mm}, &#xD;
        mm = Table[&#xD;
          msurh0[b, db, t, dist, ee, gx, gy, gz, cossintetaphi[[i, 1]], &#xD;
           cossintetaphi[[i, 2]], cossintetaphi[[i, 3]]], {i, 1, &#xD;
           Length[cossintetaphi]}];&#xD;
        Total[mm, {1}]]/Length[cossintetaphi];&#xD;
msurh0 is the following function&#xD;
&#xD;
    msurh0[(b_)?NumericQ, (db_)?NumericQ, (t_)?NumericQ, (dist_)?&#xD;
       NumericQ, (ee_)?NumericQ, (gx_)?NumericQ, (gy_)?NumericQ, (gz_)?&#xD;
       NumericQ, (cos_)?NumericQ, (sincos_)?NumericQ, (sinsin_)?&#xD;
       NumericQ] := &#xD;
     mx20[b, db, t, dist, ee, gx, gy, gz, cos, sincos, sinsin] sincos + &#xD;
      my20[b, db, t, dist, ee, gx, gy, gz, cos, sincos, sinsin] sinsin + &#xD;
      mz20[b, db, t, dist, ee, gx, gy, gz, cos, sincos, sinsin] cos&#xD;
    &#xD;
and mx20 is&#xD;
&#xD;
    mx20[(b_)?NumericQ, (db_)?NumericQ, (t_)?NumericQ, (dist_)?&#xD;
        NumericQ, (ee_)?NumericQ, (gx_)?NumericQ, (gy_)?NumericQ, (gz_)?&#xD;
        NumericQ, (cos_)?NumericQ, (sincos_)?NumericQ, (sinsin_)?&#xD;
        NumericQ] := &#xD;
      Module[{kk, nak, \[Beta], i, som1, som2, en1, en2}, &#xD;
       nak = 8.314282370753999 10^7; \[Beta] = 4.66864374 10^-5; &#xD;
       kk = 0.695054;&#xD;
       (*calcul de la dérivée suivant l&amp;#039;axe x*)&#xD;
       		som1 = 0; som2 = 0;&#xD;
       		en1 = &#xD;
        Sort[Eigenvalues[&#xD;
          matx20[b, db/2, gx, gy, gz, dist, ee, cos, sincos, &#xD;
           sinsin, \[Beta]]]];&#xD;
       		en2 = &#xD;
        Sort[Eigenvalues[&#xD;
          matx20[b, -db/2, gx, gy, gz, dist, ee, cos, sincos, &#xD;
           sinsin, \[Beta]]]];&#xD;
       		som1 = Total[Exp[-en1/(kk t)]];&#xD;
       		som2 = Total[Exp[-en2/(kk t)]];&#xD;
       		nak t  (Log[som1] - Log[som2])/db/5585];&#xD;
&#xD;
&#xD;
To calculate the function func Mathematica use several processors but when this function is used in NMinimize, Mathematica use only one processor&#xD;
&#xD;
Do you have any suggestions to  force Mathematica to use several processors to calculate the func function. It is really a pity to see that Mathematica only use 6% of power of my computer (I have 16 possible kernels on my machine)&#xD;
&#xD;
Regards&#xD;
&#xD;
Yves</description>
    <dc:creator>Yves Journaux</dc:creator>
    <dc:date>2014-12-19T13:58:53Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/231388">
    <title>Extracting solvent O atoms from PDB files</title>
    <link>https://community.wolfram.com/groups/-/m/t/231388</link>
    <description>Is there a way to extract from PDB files, the solvent-oxygen atom coordinates?

The only thing I&amp;#039;ve come up with so far is to take the coordinates in &amp;#034;VertexCoordinates&amp;#034; that are not in &amp;#034;ResidueCoordinates&amp;#034;. Is there something more direct?</description>
    <dc:creator>Veit Elser</dc:creator>
    <dc:date>2014-04-04T17:37:03Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/154381">
    <title>NonlinearModelFit screws up the fit when facing constraints</title>
    <link>https://community.wolfram.com/groups/-/m/t/154381</link>
    <description>Hello everybody.
I am using a model of several gaussians to fit infrared absorption data. For this purpose, I define the resonances I expect at certain wavenumbers (i.e. the wavelength) using &amp;#034;NormalDistribution&amp;#034; and then use the sum of them as my model.
To find starting values, I use an interactive &amp;#034;Manipulate&amp;#034; environment which is working nicely. Using these, Mathematica finds the fit requested rather quick. Some of the parameters are running to values which are not physical. Therefore, I wanted to restrict these parameters using the constraints as described in the Documentation. As soon as I have a constraint on a single parameter, Mathematica takes much longer to compute a fit and the output is much worse or even absolutely stupid (meaning there is no &amp;#034;fit&amp;#034; at all!). 

This behaviour I do not understand and would like to know how I can circumvent this situation (either using a different function than &amp;#034;NonlinearModelFit&amp;#034; or some other options. 

Any opinion on this is welcome!

Best regards

PS: I am working on a short example for you guys. I will provide it as soon as possible.
Marcel</description>
    <dc:creator>Marcel Rothfelder</dc:creator>
    <dc:date>2013-11-15T16:09:52Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/399734">
    <title>Reaction Kinetics calculation with 8 equations</title>
    <link>https://community.wolfram.com/groups/-/m/t/399734</link>
    <description>Need help!!! &#xD;
I am modeling the reaction kinetics of enzyme mechanism of a reaction system. Based on the reaction rate equations, 8 differential equations with 6 rate constants (k1-k6) are generated. The results of the expected response variable &amp;#034;b&amp;#034; are available as provided in the code below. I want to fit the model to the experimental data (b), in order to come up with the suitable rate constants for the reaction system. I have tried to adopt my problem to the solution provided by IIian but could not get reasonable results for k1-k6 and meaningful chart. Your help will be highly appreciated. Thank you. &#xD;
&#xD;
    Clear[k1, k2, k3, k4, k5, k6]; &#xD;
    &#xD;
    totaltime = 6; &#xD;
    &#xD;
    dataset1 = {{0, 0}, {5, 0.5472}, {10, 0.6310}, {15, 0.7120}, {20, 0.7630}, {25, 0.846992}, {30, 0.8364}}; &#xD;
    &#xD;
    model = ParametricNDSolveValue[{s&amp;#039;[t] == -k1*s[t]*e[t] + k2*x[t], &#xD;
    &#xD;
    a&amp;#039;[t] == -k4*a[t]*e1[t] + k5*y[t], &#xD;
    &#xD;
    b&amp;#039;[t] == k3*x[t], &#xD;
    &#xD;
    g&amp;#039;[t] == k6*y[t], &#xD;
    &#xD;
    e&amp;#039;[t] == -k1*s[t]*e[t] + k2*x[t] + k6*y[t], &#xD;
    &#xD;
    e1&amp;#039;[t] == -k4*s[t]*e[t] + k5*y[t] + k3*x[t], &#xD;
    &#xD;
    x&amp;#039;[t] == k1*s[t]*e[t] - k2*x[t] - k3*x[t], &#xD;
    &#xD;
    y&amp;#039;[t] == k4*a[t]*e1[t] - k5*y[t] - k6*y[t], &#xD;
    &#xD;
    s[0] == 4, a[0] == 0.91, e[0] == 0.36, b[0] == 0, g[0] == 0, e1[0] == 0, x[0] == 0, y[0] == 0}, y, {t, 0, totaltime}, {k1, k2, k3, k4, k5, k6}]; &#xD;
    &#xD;
    fit = FindFit[dataset1, model[k1, k2, k3, k4, k5, k6][t], {k1, k2, k3, k4, k5, {k6, 0}}, t] &#xD;
    &#xD;
    Plot[model[k1, k2, k3, k4, k5, k6][t] /. fit, {t, 0, 30}, Epilog -&amp;gt; {Red, Point[dataset1]}]</description>
    <dc:creator>Peter Adewale</dc:creator>
    <dc:date>2014-12-01T15:00:04Z</dc:date>
  </item>
</rdf:RDF>

