A nasty pandemic problem: More flushed wipes are clogging pipes, sending sewage into

Some wastewater utilities say they are facing a nasty pandemic problem: More disposable wipes being flushed down toilets are clogging pipes, jamming pumps and sending raw sewage into homes and waterways.
Utilities have urged customers for years to ignore “flushable” labels on increasingly popular, premoistened wipes used by nursing home staffs, potty-training toddlers and people who shun toilet paper. But some utilities say their wipe woes significantly worsened a year ago during a pandemic-induced toilet paper shortage, and have yet to let up.

They say some customers who resorted to baby wipes and “personal hygiene” wipes appear to have stuck with them long after toilet paper returned to store shelves. Another theory: People who wouldn’t take wipes to the office are using more while working from home.

More disinfectant wipes also are getting improperly flushed, utilities say, as people sanitize counters and doorknobs. Paper masks and latex gloves tossed into toilets and washed into storm drains also are jamming sewer equipment and littering rivers.
At WSSC Water, which serves 1.8 million residents in the Maryland suburbs, workers at its largest wastewater pumping station removed about 700 tons of wipes last year — a 100-ton jump over 2019.
“It started last March and really hasn’t eased up since,” said WSSC Water spokeswoman Lyn Riggins.
Utilities say the wipes twist into ropy wads, either in a home’s sewer pipe or miles down the line. They then congeal with grease and other cooking fats improperly sent down drains to form sometimes massive “fatbergs” that block pumps and pipes, sending sewage backing up into basements and overflowing into streams. On Wednesday, WSSC Water said 10,200 gallons of untreated sewage reached a creek in Silver Spring after an estimated 160 pounds of wipes plugged a pipe.
You’ve seen the gross sewer-blocking fatberg pics? Here’s how government, industry and shoppers can all help stop wet wipes clogging our drains and oceans.

Fatbergs – those revolting sewer mountains made of wet wipes, grease and other gunk – have been cropping up all over the place in the past year or so, from London and Cardiff to Staffordshire and Devon.
As well as causing trouble in wastewater systems, wipes can find their way into oceans. Along with other types of plastic pollution, they can cause long-term problems for sea creatures and the marine environment.
Wet wipes made up more than 90% of the material causing sewer blockages that Water UK investigated in 2017
Friends of the Earth commissioned a report from research group Eunomia, Reducing Household Contributions to Marine Plastic Pollution [PDF]. This reveals our everyday habits that result in all sorts of plastics getting into our seas. Sometimes from seemingly unlikely sources, such as medical wet wipes.

Used to be that only babies’ behinds were cleaned up with wet wipes. But in recent years, the popularity of similar products for adults has surged—they’re part of the $1.4 billion and growing “personal wipes” category of hygiene products, according to a market research report. You’ve seen them on drugstore shelves, and maybe you even use them. But while adult wipes are clearly good for business, we were curious: Are their any health benefits to using them instead of toilet paper?
Basically, no. “There is no medical advantage to cleaning up with baby wipes for adults as opposed to toilet paper,” says Holly Phillips, M.D., a women’s health specialist in New York City and a medical contributor to CBS News.  “It comes down to what makes you feel clean and fresh.” Still, keep in mind that some wipes might be pre-moistened with aloe, vitamin E, alcohol, and other gentle- or harmless-sounding additives that might actually irritate sensitive skin and leave your bum stinging and inflamed. “Play it safe by going for an unscented, unmedicated, chemical-free brand of wipe,” says Phillips.
More important than what you wipe with (remember, until toilet paper was invented in the 19th century, people used newspaper, clay, leaves, and even corncobs, which couldn’t have felt good) is how you wipe. You’ve heard a million times to do it from front to back to prevent the germs present in feces from getting near your urethra and causing a urinary tract infection—but it’s still smart advice, says Phillips. You also want to wipe firmly but not press or rub hard, which can lead to small abrasions in your anal area. And don’t leave the bathroom until you’re all cleaned off if you can help it. Leaving a little poop behind can lead to itching and irritation—not to mention a surprise on your thong.
Finally, even though adult wipes are supposed to be flushable, sewer and waste officials can tell you that it isn’t true, and wipes are clogging up pipes and sewers, causing major damage. “Just toss them in the trash or diaper disposal,” says Phillips.
Household wipes are hard to come by these days. As the number of cases of the novel coronavirus began to climb quickly in the U.S. in March, worried consumers began pantry-loading supplies like household cleaners and disinfectants, including wipes. For months, shelves have been emptied of these products, and when they are restocked, they’re gone within the hour. 
WASHINGTON — The coronavirus pandemic has led many people to buy whatever they can to protect themselves, such as, disinfectant dry wipes, masks and gloves.
However, the methods some people are using to get rid of the protective and cleaning tools are becoming a problem.
“Messy, gross,” is how Lyn Riggins, who is the spokesperson for WSSC Water, described what workers are pulling out of pumps at water treatment facilities.

Workaround for texture coordinate problem on border of terrain “chunk”?

It took me a while to diagnose what was going on here but I think I’ve figured out what the problem is, I’m just not sure how to go about fixing it. I’m working on a streaming clipmap terrain where a large heightmap is split into a grid of smaller heightmaps, then at runtime I load in a (at the moment 11×11, but it’s configurable) grid of heightmap chunks into a 2D texture array, along with a small layer index map that I can sample at chunk coordinates (x, y) to determine which array layer that chunk’s heightmap is stored. Layers become recyclable when the camera moves out of range, and new chunks get loaded in.

So far the heightmapping works perfectly, there are no gaps in the terrain. However now I have added normal mapping in using the same method (another identically sized 2D texture array using the same layer indexes as the heightmap array for simplicity), I’ve come across an issue that happens with polygons on the outer edges of each chunk.

Terrain normal map artefact

Terrain normal map artefact wireframe

In the screenshots above the axis helper is placed exactly on (x, z) = (512.0, 512.0) (Y is "up"). Each square of terrain vertices at the lowest clipmap resolution is always equal to 1 pixel of heightmap and normal map. This makes determining vertex height a simple matter of using texelFetch. I’ve added a variable called IVS (intra-vertex spacing) to control how many world units each pixel represents. In all my screenshots I’m using a 32×32 grid of 1024×1024 heightmaps with an IVS of 0.5, so each chunk is 512u and 1024 pixels.

Unfortunately if I colour the terrain based on normal map coordinates I can see the problem (I am pretty sure) is on the edge squares. For the squares on the chunk edges the face of the poly is shaded from tex coordinate 1023/1024 to 0.0, rather than from 1023/1024 to 1024/1024/1.0, or that’s at least what it looks like from this:

NOTE: in this screenshot, 511 should be 511.5. Apologies. Terrain coloured by normal map coordinates

Essentially because the texture coordinates for a vertex at the "start" (top left) of a chunk are always 0,0, at no point do any vertices get assigned 1,1. Is there a way I can tell OpenGL that I want world coordinates 512,512 to be texture coordinates 1,1 when shading the triangles between it and 511.5,511.5, and 0,0 for the ones on the other side?

In case my analysis was wrong or my explanation wasn’t great here’s my shader code. Maybe there is something easy I have missed in here, but from what I can tell the numbers work:

//Vertex shader for terrain. #include <attributes>  uniform mat4 ModelViewMatrix; uniform mat3 NormalMatrix; uniform mat4 MVP;  uniform float Scale; uniform vec2 Offset; uniform mat4 RotMatrix; uniform float IVS; uniform float MinHeight; uniform float MaxHeight; uniform int ChunkSize; uniform int MapWidth; uniform int MapHeight; uniform sampler2DArray Heightfield; uniform sampler2D LayerIndexMap;  out float Height; out vec3 NormalMapCoords;  void main() {     // Get the XZ world coordinates of the vertex.     vec2 vertXZ = Offset + (RotMatrix * vec4(VertexPosition, 1.0)).xz * Scale;     float chunkWorldSize = ChunkSize * IVS;      // Get the chunk xy and the layer index to sample from.     int chunkX = int(floor(vertXZ.x / chunkWorldSize));     int chunkY = int(floor(vertXZ.y / chunkWorldSize));     float layerIdx = texelFetch(LayerIndexMap, ivec2(chunkX, chunkY), 0).r * 256.0;      // Scale the vertex coords to the chunk image size.     vec2 pixelXY = vec2(         mod(vertXZ.x, chunkWorldSize) / IVS,         mod(vertXZ.y, chunkWorldSize) / IVS     ); // if IVS = 0.5 and vertXZ = 511.5, then pixelXY = 1023     float sampledHeight = texelFetch(Heightfield, ivec3(pixelXY.x, pixelXY.y, layerIdx), 0).r;      NormalMapCoords = vec3(         pixelXY.x / float(ChunkSize),         pixelXY.y / float(ChunkSize),         layerIdx     );      float heightMod = int(chunkX >= 0 && chunkX < MapWidth && chunkY >= 0 && chunkY < MapHeight);     sampledHeight = sampledHeight * heightMod;      Height = ((MaxHeight - MinHeight) * sampledHeight) + MinHeight;     vec3 finalPos = vec3(VertexPosition.x, Height, VertexPosition.z);      // Set the vertex position.     gl_Position = MVP * mat4(1.0) * vec4(finalPos, 1.0); } 
//Fragment shader for terrain. uniform vec3 SunVec; uniform sampler2DArray NormalMap; uniform int MeshType; //TODO debug uniform int RotIndex; //TODO debug  in float Height; in vec3 NormalMapCoords;  out vec4 fragColor;  // All components are in the range [0…1], including hue. vec3 hsv2rgb(vec3 c) {     vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);     vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);     return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); }  void main() {     //vec3 baseCol = vec3(hsv2rgb(vec3(106.0 / 255.0, 1, 1))); // Flat colour.     //vec3 baseCol = vec3(hsv2rgb(vec3(Height, 1, 1))); // Colour by height.     vec3 baseCol = vec3(hsv2rgb(vec3((NormalMapCoords.x + NormalMapCoords.y) / 2.0, 1, 1))); // Colour by normal map coords.      vec3 ambient = vec3(0.1, 0.1, 0.1); //TODO use a combination of colour control maps and daylight in-shadow light intensity to calc this (col * intensity)      vec2 normalXZ = texture(NormalMap, NormalMapCoords, 0).rg;     float normalY = 1.0 - (normalXZ.x + normalXZ.y);     float sunlight = max(0.0, dot(normalize(vec3(normalXZ.x, normalY, normalXZ.y)), normalize(SunVec)));      vec3 finalCol = (ambient + sunlight) * baseCol;     fragColor = vec4(finalCol, 1.0); } 

The normal map is using LINEAR for both filters and CLAMP_TO_EDGE for S and T wrapping, and I should also point out a chunk is not a single mesh. The clipmap follows the camera around and covers multiple chunks.

Solving a determinant to get non-zero roots in a heat transfer problem

I am trying to solve a mathematical model of a heat transfer problem. As an intermediate step there is a characteristic equation in the form of a determinant, which needs to be solved for variable r to get three real roots. These roots feed the subsequent steps. However, the roots I get are really small and probably leads to Indeterminate errors later. I am attaching the entire script below:

Nuc = 5.33; Nuh = 6.49; mc = 9.305 E - 08; mh = 1.1246 E - 07; k = 16.27; vc = (mc/1.138)/(0.5 2 10^-6); vh = (mh/1.225)/(0.25 2 10^-6); cpc = 1039; cph = 1006.43; Ac = 2 (0.5 + 2) 10^-6; Ah = 2 (0.25 + 2) 10^-6;  C1 = mc cpc; C2 = mh cph;  hc = Nuc 0.0242/(0.8 10^-3); hh = Nuh 0.0242/(0.444 10^-3);  b1 = hc Ac/C1; b2 = hh Ah/C2; bc = k (25 1 10^-6)/(1 10^-3 C1);  λ = k (4.5 10^-6)/(25 10^-3 C1); ν = C1/C2;  bstar = b1 + (b2/ν) + 4 bc; γ1 = b1/bstar; γ2 = b2/(ν bstar); γc1 = (2 b1 + 4 bc)/bstar; γc2 = (2 b2 + 4 ν bc)/(ν bstar);  A = {    {-r + b1 (1 - γ1), b1 γ2, -b1 γc2},    {-b2 γ1, -r - b2 (1 - γ2), b2 γc1},    {r, -r, λ r^2}   }; sol = LinearSolve[Det[A] == 0,r]   r1 = r /. sol[[1]] r2 = r /. sol[[2]] r3 = r /. sol[[3]]  G1 = (4 b1 b2 bc +       2 b1 ((b2/ν) +          2 bc) r1)/(4 b1 b2 bc + (((1/ν) - 1) b1 b2 +          4 bc (b1 - b2)) r1 - bstar r1^2); G2 = (4 b1 b2 bc +       2 b1 ((b2/ν) +          2 bc) r2)/(4 b1 b2 bc + (((1/ν) - 1) b1 b2 +          4 bc (b1 - b2)) r2 - bstar r2^2); G3 = (4 b1 b2 bc +       2 b1 ((b2/ν) +          2 bc) r3)/(4 b1 b2 bc + (((1/ν) - 1) b1 b2 +          4 bc (b1 - b2)) r3 - bstar r3^2); H1 = (4 b1 b2 bc -       2 b2 (b1 + 2 bc) r1)/(4 b1 b2 bc + (((1/ν) - 1) b1 b2 +          4 bc (b1 - b2)) r1 - bstar r1^2); H2 = (4 b1 b2 bc -       2 b2 (b1 + 2 bc) r2)/(4 b1 b2 bc + (((1/ν) - 1) b1 b2 +          4 bc (b1 - b2)) r2 - bstar r2^2); H3 = (4 b1 b2 bc -       2 b2 (b1 + 2 bc) r3)/(4 b1 b2 bc + (((1/ν) - 1) b1 b2 +          4 bc (b1 - b2)) r3 - bstar r3^2);  Num = {    {((H1 - G1)/r1) E^-r1, ((H2 - G2)/r2) E^-r2, ((H3 - G3)/r3) E^-r3},    {E^-r1, E^-r2, E^-r3},    {1, 1, 1}   }; Den = {    {(H1 E^-r1 - G1)/r1, (H2 E^-r2 - G2)/r2, (H3 E^-r3 - G3)/r3},    {E^-r1, E^-r2, E^-r3},    {1, 1, 1}   }; eff = 1 - (Det[Num]/Det[Den])  

Any help in pointing out my error will is appreciated. The objective is to evaluate eff.

Problem with plotting (resp. expanding) the Hurwitz Zeta function

I expected the two plots to be identical. Can anyone confirm that the discrepancies show a bug?

b[s_, v_] := If[s == 0, 1, -s*Zeta[1 - s, v]];   Table[Expand[FullSimplify[b[n, x]]], {n, 1, 6}] Plot[%, {x, -1, 3/2}, PlotRange -> {-1, 1}]  Table[BernoulliB[n, x], {n, 1, 6}] Plot[%, {x, -1, 3/2}, PlotRange -> {-1, 1}] 

Indexing problem [duplicate]

There are hundreds of url on my website https://www.resultsup.in showing status Crawled – currently not indexed and Discovered – Currently not indexed. After submitted several times and waiting for months, these urls still not getting indexed by Google. Content on the site is unique. How to fix this problem.

Problem with KarhunenLoeveExpansion’s output

I have a matrix called realizationMat, it contains 101 measurements of 90 realizations of a stochastic process.

I use KarhunenLoeveDecomposition over it as

VA1 = realizationMat[[1]]; VA2 = realizationMat[[2]]; VA3 = realizationMat[[3]]; KLVariablesB =    KarhunenLoeveDecomposition[{VA1, VA2, VA3, ...}]; 

Note that I have more elements VA, but I don’t write them for the shake of brevity.

In the documentation is written: rows of the transformation matrix m are the eigenvectors of the covariance matrix formed from the arrays ai. Also, The transformed arrays bi are uncorrelated, are given in order of decreasing variance, and have the same total variance as ai.

However, if I write ListPlot[{KLVariablesB[[2, 1]]}, Joined -> True], it doesn’t look like an eigenvector at all, see figure 1Figure 1, fist row of m. Also, if I instead plot ListPlot[{KLVariablesB[[1, 1]]}, Joined -> True], it looks way more as an eigenvector, see figure 2Figure 2, yet these aren’t the eigenvectors of the original covariance matrix.

Can someone please tell me what is wrong with my code?

Best regards.

A problem with a supposedly simple Plot

I am trying to redraw the function F as a function of Jt. Where

$ $ F = {{(1 + 2{{\left| {{D_4}\left( t \right)} \right|}^2})} \over 3}$ $

I should get the same result in the paper "Annals of Physics 355 (2015) 170–181", Figure 6 (b) solid-black line. But I get different results! Is there something wrong?

NB: D4(t) is defined by equation (12d) and F is defined at the bottom of page 7

ClearAll["Global`*"]  xx = 0.1; J = 1.0; lam = J/xx; t = tau/J; k = Sqrt[lam^2 + J^2];  D4 = ((J^22)/(4*(k^2 + lam*k)))*     Exp[-1 I*(lam + k)*t] + ((J^2)/(4*(k^2 - lam*k)))*     Exp[-1 I*(lam - k)*t] - (1/2)*Cos[J*t];  F = (1 + 2*Abs[D4]^2)/3.0;  Plot[F, {tau, 0, 50}, PlotRange -> {0, 1}]