Test

SMPTE color bars – Click for your own test pattern kit

This page is for posters to test comments prior to submitting them to WUWT. Your tests will be deleted in a while, though especially interesting tests, examples, hints, and cool stuff will remain for quite a while longer.

Some things that don’t seem to work any more, or perhaps never did, are kept in Ric Werme’s Guide to WUWT.

Formatting in comments

WordPress does not provide much documentation for the HTML formatting permitted in comments. There are only a few commands that are useful, and a few more that are pretty much useless.

A typical HTML formatting command has the general form of <name>text to be formatted</name>. A common mistake is to forget the end command. Until WordPress gets a preview function, we have to live with it.

N.B. WordPress handles some formatting very differently than web browsers do. A post of mine shows these and less useful commands in action at WUWT.

N.B. You may notice that the underline command, <u>, is missing. WordPress seems to suppress for almost all users, so I’m not including it here. Feel free to try it, don’t expect it to work.

Name Sample Result
b (bold) This is <b>bold</b> text This is bold text
Command strong also does bolding.
i (italics) This is <i>italicized</i> text This is italicized text
Command em (emphasize) also does italics.
a (anchor) See <a href=http://wermenh.com>My home page</a> See My home page
A URL by itself (with a space on either side) is often adequate in WordPress. It will make a link to that URL and display the URL, e.g. See http://wermenh.com.

Some source on the web is presenting anchor commands with other parameters beyond href, e.g. rel=nofollow. In general, use just href=url and don’t forget the text to display to the reader.

blockquote (indent text) My text
<blockquote>quoted text</blockquote>
More of my text
My text

quoted text

More of my text

Quoted text can be many paragraphs long.
WordPress italicizes quoted text (and the <i> command enters normal text).
strike This is <strike>text with strike</strike> This is text with strike
pre (“preformatted” – use for monospace display) <pre>These lines are bracketed<br>with &lt;pre> and &lt;/pre>
These lines are bracketed
with <pre> and </pre>
Preformatted text, generally done right. Use it when you have a table or something else that will look best in monospace. Each space is displayed, something that <code> (next) doesn’t do.
code (use for monospace display) <code>Wordpress handles this very differently</code> WordPress handles this very differently
See https://wattsupwiththat.com/resources/#comment-65319 to see what this really does.

Youtube videos

Using the URL for a YouTube video creates a link like any other URL. However, WordPress accepts the HTML for “embedded” videos. From the YouTube page after the video finishes, click on the “embed” button and it will suggest HTML like:

<iframe width="560" height="315"
        src="http://www.youtube.com/embed/yaBNjTtCxd4"
        frameborder="0" allowfullscreen>
</iframe>

WordPress will convert this into an internal square bracket command, changing the URL and ignoring the dimension. You can use this command yourself, and use its options for dimensions. WordPress converts the above into something like:

[youtube https://www.youtube.com/watch?v=yaBNjTtCxd4&w=640&h=480]

Use this form and change the w and h options to suit your interests.

Images in comments

If WordPress thinks a URL refers to an image, it will display the image
instead of creating a link to it. The following rules may be a bit excessive,
but they should work:

  1. The URL must end with .jpg, .gif, or .png. (Maybe others.)
  2. The URL must be the only thing on the line.
  3. This means you don’t use <img>, which WordPress ignores and displays nothing.
  4. This means WordPress controls the image size.
  5. <iframe> doesn’t work either, it just displays a link to the image.

If you have an image whose URL doesn’t end with the right kind of prefix, there may be two options if the url includes attributes, i.e. if it has a question mark followed by attribute=value pairs separated by ampersands.

Often the attributes just provide information to the server about the source of the URL. In that case, you may be able to just delete everything from the question mark to the end.

For some URLs, e.g. many from FaceBook, the attributes provide lookup information to the server and it can’t be deleted. Most servers don’t bother to check for unfamiliar attributes, so try appending “&xxx=foo.jpg”. This will give you a URL with one of the extensions WordPress will accept.

WordPress will usually scale images to fit the horizontal space available for text. One place it doesn’t is in blockquoted text, there it seems to display fullsize and large images overwrite the rightside nav bar text.

Special characters in comments

Those of us who remember acceptance of ASCII-68 (a specification released in 1968) are often not clever enough to figure out all the nuances of today’s international character sets. Besides, most keyboards lack the keys for those characters, and that’s the real problem. Even if you use a non-ASCII but useful character like ° (as in 23°C) some optical character recognition software or cut and paste operation is likely to change it to 23oC or worse, 230C.

Nevertheless, there are very useful characters that are most reliably entered as HTML character entities:

Type this To get Notes
&amp; & Ampersand
&lt; < Less than sign
Left angle bracket
&bull; Bullet
&deg; ° Degree (Use with C and F, but not K (kelvins))
&#8304;
&#185;
&#178;
&#179;
&#8308;

¹
²
³
Superscripts (use 8304, 185, 178-179, 8308-8313 for superscript digits 0-9)
&#8320;
&#8321;
&#8322;
&#8323;



Subscripts (use 8320-8329 for subscript digits 0-9)
&pound; £ British pound
&ntilde; ñ For La Niña & El Niño
&micro; µ Mu, micro
&plusmn; ± Plus or minus
&times; × Times
&divide; ÷ Divide
&ne; Not equals
&nbsp; Like a space, with no special processing (i.e. word wrapping or multiple space discarding)
&gt; > Greater than sign
Right angle bracket
Generally not needed

Various operating systems and applications have mechanisms to let you directly enter character codes. For example, on Microsoft Windows, holding down ALT and typing 248 on the numeric keypad may generate the degree symbol. I may extend the table above to include these some day, but the character entity names are easier to remember, so I recommend them.

Latex markup

WordPress supports Latex. To use it, do something like:

$latex P = e\sigma AT^{4}$     (Stefan-Boltzmann's law)

$latex \mathscr{L}\{f(t)\}=F(s)$

to produce

P = e\sigma AT^{4}     (Stefan-Boltzmann’s law)

\mathscr{L}\{f(t)\}=F(s)

Linking to past comments

Each comment has a URL that links to the start of that comment. This is usually the best way to refer to comment a different post. The URL is “hidden” under the timestamp for that comment. While details vary with operating system and browser, the best way to copy it is to right click on the time stamp near the start of the comment, choose “Copy link location” from the pop-up menu, and paste it into the comment you’re writing. You should see something like https://wattsupwiththat.com/2013/07/15/central-park-in-ushcnv2-5-october-2012-magically-becomes-cooler-in-july-in-the-dust-bowl-years/#comment-1364445.

The “#<label>” at the end of the URL tells a browser where to start the page view. It reads the page from the Web, searches for the label and starts the page view there. As noted above, WordPress will create a link for you, you don’t need to add an <a> command around it.

One way to avoid the moderation queue.

Several keywords doom your comment to the moderation queue. One word, “Anthony,” is caught so that people trying to send a note to Anthony will be intercepted and Anthony should see the message pretty quickly.

If you enter Anthony as An<u>th</u>ony, it appears to not be caught,
so apparently the comparison uses the name with the HTML within it and
sees a mismatch.

Advertisements

162 thoughts on “Test

  1. I just had another thought about underlines.

    I think I discovered that if I could get around the automatic spam trap by writing Anthony with an empty HTML command inside, e.g. Ant<b></b>hony .

    What happens when I try that with underline?

    Apologies in advance to the long-suffering mods, at least one of these comments may get caught by the spam trap.

    • I remember seeing this test pattern on TV late at night after the National Anthem and before the local station broadcast came on early in the morning while the biscuits, bacon and oatmeal were still cooking. The first show after a weather report was “Dialing For Dollars” and you had better know the count when your phone rang…. 1 up and 3 down… to get the cash.

  2. WordPress only displays images for URLs on their own line and ending with a image file extension. If I delete the attribute string above, i.e. ?token=I7JQbQli1swRgik%2BKnIKAmCk52Y%3D then what’s left should work:

    • Now one that would permit image display:

      Update: Right clicking to get the image’s url gave me a URL that goes through WP’s cache via (slashes replaced by spaces, periods by dashes) i2-wp-com wermenh-com images winter0708 P3020227_snowbank7-jpg

    • Now just the image without a suffix:

      Update: This image uses the same URL as the previous cached image. That means we can’t use a changing suffix to force a trip around the cache any more for HTTP images. I’ll play with HTTPS later.

      • Reply to Ric W ==> Thanks — I was fielding comments on an essay using an unfamiliar tablet, and wasn’t sure which and/or both were part of HTML5. I usually use the old ClimateAudit comment Greasemonkey tool, even though its formatting is funky these days, for the tags. Don’t suppose you could update that add-in?

      • IIRC, Greasemonkey was written for CA, which uses a different theme that does WUWT.

        I don’t have the time to figure out the JavaScript code or whatever it’s written in, and I don’t have the ability to make changes that deep in WUWT.

        Instead of Greasemonkey, I often use https://addons.mozilla.org/en-US/firefox/addon/its-all-text/ . It can open up an external editor, so it has saved my butt a few times when WP loses a post I was making.

  3. Hey, what happened to the old smiley face?? When I tried to post it, this appeared:

    I wonder if WordPress changed any others?

     ☹ ☻

    The old smiley was more subtle; less in-your-face. The new one is way too garish.

    If WP keeps that up, I’ll just have to use this lame replacement:

    :-)

    Or even worse:

    ;-)

  4. It’s so hard to get a consistent story here. We have an article saying, accurately, “#ExxonKnew ?? meh… #JohnsonKnew”. Yes, what Exxon knew in 1977 was just the conventional scientific understanding. And it wasn’t about imminent cooling.

    I’m hearing you loud and clear but I’d just like to have you on record.

    Nick, are we in the midst of man-made climate warming right now – imminent or otherwise – as we speak, this day of our Lord AD 2017, according to the worlds eminent scientists! Or is it all a media beat up?

    A yes or no answer will do.

    Again, to be as clear as possible, I’ll ask the question again*:

    Is it “the conventional scientific understanding” today**, that the world is actually being threatened by man-made global warming?

    Simple question, I’m sure you can answer!

    *Answer both separately if you feel the rephrasing might change your answer.
    **November 2017

  5. This site is a plethora of theories and assumptions on the matter.
    Never has I seen such propaganda. Your information is less then accurate to say the least.
    FYI, There is nothing we can do about climate change. The government has been chem spraying for decades. aluminum barium etc.. These are to deflect sunshine back into space. and dumb us down, causes cancer ect… They are WRONG>
    FYI our sun is beginning a new cycle. This cycle is a every + or – 360 year event that cools the earth considerably. Much like a mini ice age. First temps spike then drop and drop considerably Do you home work over there. The sun dictates everything here on earth. duh, There is no stopping it. Sun giving off less energy the earths magnetic field adjusts and we get a climate change. FACT!!!!!!!!!!!!!!! Stop the B.S. and go back to school. Government B.S. to make a buck. Despicable website chalk full of subversive agendas. So sad. India and china are monster contributors to pollution and this site and the Paris agreement do NOTHING to curb there output. Your all B.S. Admit it… this site is a scam. LOL
    My BEST,
    GOD

    [????? .mod]

  6. Anthony,

    I’m trying to figure out why my posts (comments) never appear on you board. What am I doing wrong?

    Kevin

    [Looks like they’re getting caught by WordPress’s IP blacklist filter. Happens all the time to otherwise innocuous posters. All we can really recommend is to keep trying, and try dropping a note to the mods. Even if it gets “trashed” by WP, we can find and rescue the comment. -mod]

  7. I find that the trend is borderline significant now. – Nick Stokes

    And thus, Nick Stokes – the mathematician – sells his sole as a politician.

    Borderline and significant, now that is a wonderful construct! I’m hearing you Nick, I’ve got some land I’d like to sell, its swamp land but it is borderline prime! You know what I mean, its trending dry its just a little wet! But the trend is is significant, you can bet your house on it! ;-)

  8. Between significant and not significant, the gods have placed, as they so often do, a border region.

    – Nick Stokes

    Sure enough Nick but why should we assume that such a border would necessarily be smooth, flat, level or linear! ;-)

  9. Between significant and not significant, the gods have placed, as they so often do, a border region. – Nick Stokes

    Sure enough Nick but why should we assume that such a border would necessarily equate to the smooth, the average, the flat, the level or the linear!* ;-)

    * Scale, being the key word here!

  10. –> Ray in SC December 5, 2017 at 3:37 pm said:

    Scott,
    Nick gave an informative response to a question and, in doing so, has added much more to the discussion than your disparaging remark.

    No, he spouted about a statistical test that sounds well and good but he failed to point out, that sample size is key and that t-tests are unusual or unreliable when the sample size is low. And that is the point at issue here. Calculating the probability of a null hypothesise on too small as dataset is worse than no significance testing at all!

    There is a false confidence built it this specific statistic that favours trust in the test itself. For example, the smaller the dataset, the probability that the sample will be further away from the null hypothesis is greater even when the null hypothesis is true.

    However, these statistical results have absolutely nothing to do with reality!* Even when you understand it, the theory – which I actually also happen to love – was originally termed “Experimental Probability” because what happens in the real world can not be incapsulated. Every moment, every action, is an experiment. Very large numbers of these “experiments” will approach the “theory”, but that is all we have; to-date!

    We – many of us here – keep coming back to this argument about the validity of probability distribution and its application in the “real world”.

    *Okay, they do have something to do with reality, I concede that argument but the connection is not coincident with the particular point I’m trying to make here. ;-)

  11. In contrast, we use the following code.

    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]), 
         ylim = range(0, ab[[M]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
         ylab = "Temperature (Kelvins)", 
         main = "Temperature vs. Altitude for\nDifferent Molecule Masses")
    grid()
    for(i in 1:M) lines(c(0, -ab[[M]][i, 1] / ab[[M]][i, 2]), 
                        c(ab[[M]][i, 1] * 2 / k.B, 0),
                        col = i, lwd = 2)   
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
           legend = paste(round(m / amu), "AMUs"), title = "Particle Mass")
    

    Note in the following

    [The mods appreciate your effort in testing your code here, but, no we don’t understand it either. 8<) .mod]

  12. The column of gas used in Brown’s scenario is constrained laterally and so leads only to a linear decline in density and pressure with height which does not properly reflect the real world scenario.

    Actually, no. As Coombes and Laue demonstrated, a uniform temperature is entirely consistent with an exponential pressure reduction

  13. Unfortunately, except for one post I slipped in while he was on sabbatical, he has declined all mine ever since I failed to exhibit enough deference to Christopher Monckton’s erudition.

  14. Sorry,

    w.

    Don’t be. Your post provided a lot of insight, which I appreciate. As to your failing to comprehend the shortcomings of your “proof,” I completely understand that not everyone is comfortable with starting from first principles to re-examine his beliefs; each of us has his respective limitations.

    For the benefit of readers with a somewhat broader perspective, though, I’ll explain it thus:

    If you simulate a monatomic gas comprising two constituents, one consisting of N/2 molecules of mass m and another consisting of N/2 molecules of mass 2m, all randomly traveling in one dimension for the sake of simplicity subject to a gravitational field and among them having total (kinetic + potential) energy NE_{avg}, what you find after a long period of “thermalization” is that at altitude NE_{avg}/2mg the first constituent’s average molecular kinetic energy is \frac{NE_{avg}}{2(3N-2)}, while the second constituent’s is zero. (By “what you find” I mean what you find after averaging over a long time; variances are so great that over short time periods these averages not repeatably undetectable. I had attempted to get a post published here that would explain this in more detail, but apparently I’ve become persona non grata here since I disputed Christopher Monckton’s bizarre mathematics.)

    In any event, those energies translate to respective temperatures at that altitude of k_B\frac{NE_{avg}}{3N-2} and absolute zero for the different constituents, where k_B is Boltzmann’s constant. You will also find that both constituents have the same average temperature, 2k_BNE_{avg}/(3N-2), at altitude zero and that both temperatures change linearly with altitude: both lapse rates are non-zero, but, since the constituents are both at equilibrium there is by definition no average heat flow.

    In other words, the equilibrium temperatures at the higher altitude are different for the different constituents, the different constituents have different lapse rates, and these values’ averages over long periods persist even though the constituents are intimately mixed, but despite their temperature differences and their intimate mixing no net heat flows on average between them.

    Moreover, you’d find that each constituent by itself would exhibit a lapse rate twice the value it exhibits when the two are mixed.

    Now, a silver wire is not the same as a gas, and mixing two gas components together is not the same as coupling a silver wire to a gas column. But adding the second constituent to the first reduces the original first’s lapse rate by removing the constraint that the first constituent’s total energy remain fixed. Since coupling the gas column to the silver wire removes a similar constraint from the gas column, we are entitled to question the silver-wire proof’s assumption that coupling the silver wire to the gas column would leave the latter’s lapse rate unchanged.

    Moreover, since the added constituent adopts a lapse rate different from that of the original constituent—and since that difference persists despite the constituents’ being intimately mixed—it’s not self-evident that thermal coupling would cause the silver wire’s temperature difference to equal the gas column’s. Nor, since the different gas constituents’ lapse rates cause no heat flow down their respective temperature gradients, can we conclude that whatever temperature gradient prevails at equilibrium in the silver wire would necessarily cause heat to flow within it.

    In short, although what we think we know about Fourier’s law would seem to dictate that any temperature gradient at all would cause some heat to flow through a heat-conductive medium, we find if we reason from first principles that gravity modifies that conclusion. Before we apply a physical law, that is, it’s important to know the assumptions on which it is based.

  15. g <- 9.8 # Gravitational acceleration, m/sec^2
    k.B <- 1.38064852E-23 # Boltzmann's constant, J/K
    amu <- 1.660539040E-27 # Atomic mass unit, kg
    T <- 288 # Temperature, K
    
    gas <- function(m, z0, v0, t, collision.prob = 0.5){
      N <- length(m)
      if(length(z0) != N | length(v0) != N) 
        stop("m, z0, and v0 must be the same length")
      g <- 9.8
      z1 <- z0
      v1 <- v0
      t1 <- t[1]
      v <- z <- matrix(nrow = N, ncol = length(t))
      repeat{
        #  Decide whether (provisionally) to allow collision and, if collision would
        #  be allowed, which molecules would collide and when:
        tc <- Inf
        colliders  1){
          for(i in 1:(N - 1)){
            for(j in (i + 1):N){
              if(collision.prob > runif(1)){
                tc.i <- t1 - diff(z1[c(i, j)]) / diff(v1[c(i, j)])
                if(tc.i <= t1) next
                if(tc.i < tc){
                  tc <- tc.i
                  colliders <- matrix(c(i, j), nrow = 1)
                }else if(tc.i == tc){
                  colliders <- rbind(colliders, c(i, j))
                }
              }
            }
          }
        }
        
        # Determine provisional bounce time and which molecules would bounce 
        tbs <- numeric(N)
        for(i in 1:N) tbs[i] <- max(Re(polyroot(c(z1[i], v1[i], -g / 2))))
        tb <- min(tbs)  
        bouncers <- which(tbs == tb)
        tb <- tb + t1
        
        #  End of current interval is earlier of provisional collision and bounce
        #  times:
        t2 <- min(tc, tb)
        interval = t1 & t < t2)
        
        # Current interval's position and and velocity curves
        z[, interval] <- z1 + v1 %*% t((t[interval] - t1)) + 
          rep(-g, N) %*% t((t[interval] - t1) ^ 2 / 2)
        v[, interval] <- v1 + rep(-g, N) %*% t((t[interval] - t1))
        
        # for(i in 1:N) lines(t[interval], z[i, interval], col = i, lty = 3, lwd = 3)
        
        # Next interval's initial conditions:
        z1 <- z1 + v1 * (t2 - t1) - g * (t2 - t1) ^ 2 / 2
        v1 <- v1 - g * (t2 - t1)
        
        #  Implement collisions or bounces, whichever would come first:
        if(tc < tb){
          vc <- v1
          for(i in 1:dim(colliders)[1]){
            z1[colliders[i,]] <- rep(mean(z1[colliders[i,]]), 2)
            v1[colliders[i, 1]] <- 
              ((-diff(m[colliders[i,]])) * vc[colliders[i, 1]] +
                 2 * m[colliders[i, 2]] * vc[colliders[i, 2]]) / 
              sum(m[colliders[i,]])
            v1[colliders[i, 2]] <- v1[colliders[i, 1]] - diff(vc[colliders[i,]])
          }
        }else{
          v1[bouncers] <- -v1[bouncers]
        }
        t1 <- t2
        if(t[length(t)] < t1) break
      }
      list(t = t, z = z, v = v, K = 1/2 * m * v ^ 2)
    }
    
    
    # HERE'S WHAT THE TRAJECTORIES LOOK LIKE
    initial.conditions <- function(N, m = NA, T = 288){
      if(missing(m)){
        m <- seq(24.43433, 48.86866, length.out = N) * amu
      }else{
        if(length(m) != N) stop("Length of m must be N")
      } 
      E.avg <- 3/2 * k.B * T  # Energy per molecule in one dimension
      E <- N * E.avg * (r <- runif(N)) / sum(r)
      v0 <- sign(runif(N) - 0.5) * sqrt(2 * (KE <- runif(N) * E) / m)
      z0 <- (E - KE) / m / g
      list(m = m, z0 = z0, v0 = v0)
    }
    
    N <- 4  # Number of molecules
    t <- seq(0, 200, 0.1)
    
    inits <- initial.conditions(N)
    m <- inits$m
    z0 <- inits$z0
    v0 <- inits$v0
    trial <- gas(m, z0, v0, t, 0.75)
    plot(NA, xlim = range(t), ylim = range(trial$z), xlab = "Time (Seconds)",
         ylab = "Altitude (Meters)", 
         main = paste(N, "-Particle-Gas Motion in One Dimension", sep = ""))
    grid()
    for(i in 1:N) lines(t, trial$z[i,], col = i, lwd = 2)
    
    
    #  TO TAKE STATISTICS, WE GENERATE LONG RECORDS, WITH DIFFERENT NUMBERS OF
    #  MOLECULES
    t <- 0:1000000
    M <- 5
    trials <- ab <- list()
    ab[[1]] <- matrix(c(3/2 * k.B * T, -m[1] * g), nrow = 1)
    for(N in 2:M){
        inits <- initial.conditions(N)
      m <- inits$m
      z0 <- inits$z0
      v0 <- inits$v0
      trials[[N]] <- gas(m, z0, v0, t, 0.75)
      ab[[N]] <- matrix(nrow = N, ncol = 2)
      for(i in 1:N) ab[[N]][i,] <- 
        lm(trials[[N]]$K[i,] ~ trials[[N]]$z[i,])$coefficients
    }
    
    #  Plot the lapse rate of the lightest molecule in each trial
    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]), 
         ylim = range(0, ab[[2]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
         ylab = "Temperature (Kelvins)", 
         main = "Temperature vs. Altitude for\nDifferent System Sizes")
    grid()
    for(i in 1:M) lines(c(0, -ab[[i]][1, 1] / ab[[i]][1, 2]), 
                        c(ab[[i]][1, 1] * 2 / k.B, 0),
                        col = i, lwd = 2)   
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
           legend = paste(1:M, "-Molecule System", sep = ""))
    
    #  Compute and plot altitude histograms
    zmax <- dmax <- 0
    histo <- list()
    for(i in 2:M){
      histo[[i]] <- hist(trials[[i]]$z[1,], plot = FALSE)
      dmax <- max(dmax, histo[[i]]$density)
      zmax <- max(zmax, histo[[i]]$breaks)
    }
    plot(NA, xlim = c(0, zmax), ylim = c(0, dmax), xlab = "Altitude (Meters)",
         ylab = "Probability Density (/Meter)", 
         main = "Molecule-Presence Probability\nDensity as Function of Altitude")
    grid()
    for(i in M:2) lines(histo[[i]]$mids, histo[[i]]$density, col = i, lwd = 2)
    legend("topright", col = 2:M, lty = 1, lwd = 2, bty = "n",
           legend = paste(2:M, "-Molecule System", sep = ""))
    
    #  Determine ratios of lapse rate to weight
    simulation.ratio <- numeric(M)
    for(i in 1:M) simulation.ratio[i] <- 
      -initial.conditions(2)$m[1] * g / ab[[i]][1, 2]
    theoretical.ratio <- 3 * (1:M) - 2
    rbind(theoretical.ratio, simulation.ratio)
    
    #  Plot the lapse rate of every molecule in the last trial
    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]), 
         ylim = range(0, ab[[M]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
         ylab = "Temperature (Kelvins)", 
         main = "Temperature vs. Altitude for\nDifferent Molecule Masses")
    grid()
    for(i in 1:M) lines(c(0, -ab[[M]][i, 1] / ab[[M]][i, 2]), 
                        c(ab[[M]][i, 1] * 2 / k.B, 0),
                        col = i, lwd = 2)   
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
           legend = paste(round(m / amu), "AMUs"), title = "Particle Mass")
    
  16. g <- 9.8 # Gravitational acceleration, m/sec^2
    k.B <- 1.38064852E-23 # Boltzmann's constant, J/K
    amu <- 1.660539040E-27 # Atomic mass unit, kg
    T <- 288 # Temperature, K

    gas <- function(m, z0, v0, t, collision.prob = 0.5){
    N <- length(m)
    if(length(z0) != N | length(v0) != N)
    stop("m, z0, and v0 must be the same length")
    g <- 9.8
    z1 <- z0
    v1 <- v0
    t1 <- t[1]
    v <- z <- matrix(nrow = N, ncol = length(t))
    repeat{
    # Decide whether (provisionally) to allow collision and, if collision would
    # be allowed, which molecules would collide and when:
    tc <- Inf
    colliders 1){
    for(i in 1:(N – 1)){
    for(j in (i + 1):N){
    if(collision.prob > runif(1)){
    tc.i <- t1 – diff(z1[c(i, j)]) / diff(v1[c(i, j)])
    if(tc.i <= t1) next
    if(tc.i < tc){
    tc <- tc.i
    colliders <- matrix(c(i, j), nrow = 1)
    }else if(tc.i == tc){
    colliders <- rbind(colliders, c(i, j))
    }
    }
    }
    }
    }

    # Determine provisional bounce time and which molecules would bounce
    tbs <- numeric(N)
    for(i in 1:N) tbs[i] <- max(Re(polyroot(c(z1[i], v1[i], -g / 2))))
    tb <- min(tbs)
    bouncers <- which(tbs == tb)
    tb <- tb + t1

    # End of current interval is earlier of provisional collision and bounce
    # times:
    t2 <- min(tc, tb)
    interval = t1 & t < t2)

    # Current interval's position and and velocity curves
    z[, interval] <- z1 + v1 %*% t((t[interval] – t1)) +
    rep(-g, N) %*% t((t[interval] – t1) ^ 2 / 2)
    v[, interval] <- v1 + rep(-g, N) %*% t((t[interval] – t1))

    # for(i in 1:N) lines(t[interval], z[i, interval], col = i, lty = 3, lwd = 3)

    # Next interval's initial conditions:
    z1 <- z1 + v1 * (t2 – t1) – g * (t2 – t1) ^ 2 / 2
    v1 <- v1 – g * (t2 – t1)

    # Implement collisions or bounces, whichever would come first:
    if(tc < tb){
    vc <- v1
    for(i in 1:dim(colliders)[1]){
    z1[colliders[i,]] <- rep(mean(z1[colliders[i,]]), 2)
    v1[colliders[i, 1]] <-
    ((-diff(m[colliders[i,]])) * vc[colliders[i, 1]] +
    2 * m[colliders[i, 2]] * vc[colliders[i, 2]]) /
    sum(m[colliders[i,]])
    v1[colliders[i, 2]] <- v1[colliders[i, 1]] – diff(vc[colliders[i,]])
    }
    }else{
    v1[bouncers] <- -v1[bouncers]
    }
    t1 <- t2
    if(t[length(t)] < t1) break
    }
    list(t = t, z = z, v = v, K = 1/2 * m * v ^ 2)
    }

    # HERE'S WHAT THE TRAJECTORIES LOOK LIKE
    initial.conditions <- function(N, m = NA, T = 288){
    if(missing(m)){
    m <- seq(24.43433, 48.86866, length.out = N) * amu
    }else{
    if(length(m) != N) stop("Length of m must be N")
    }
    E.avg <- 3/2 * k.B * T # Energy per molecule in one dimension
    E <- N * E.avg * (r <- runif(N)) / sum(r)
    v0 <- sign(runif(N) – 0.5) * sqrt(2 * (KE <- runif(N) * E) / m)
    z0 <- (E – KE) / m / g
    list(m = m, z0 = z0, v0 = v0)
    }

    N <- 4 # Number of molecules
    t <- seq(0, 200, 0.1)

    inits <- initial.conditions(N)
    m <- inits$m
    z0 <- inits$z0
    v0 <- inits$v0
    trial <- gas(m, z0, v0, t, 0.75)
    plot(NA, xlim = range(t), ylim = range(trial$z), xlab = "Time (Seconds)",
    ylab = "Altitude (Meters)",
    main = paste(N, "-Particle-Gas Motion in One Dimension", sep = ""))
    grid()
    for(i in 1:N) lines(t, trial$z[i,], col = i, lwd = 2)

    # TO TAKE STATISTICS, WE GENERATE LONG RECORDS, WITH DIFFERENT NUMBERS OF
    # MOLECULES
    t <- 0:1000000
    M <- 5
    trials <- ab <- list()
    ab[[1]] <- matrix(c(3/2 * k.B * T, -m[1] * g), nrow = 1)
    for(N in 2:M){
    inits <- initial.conditions(N)
    m <- inits$m
    z0 <- inits$z0
    v0 <- inits$v0
    trials[[N]] <- gas(m, z0, v0, t, 0.75)
    ab[[N]] <- matrix(nrow = N, ncol = 2)
    for(i in 1:N) ab[[N]][i,] <-
    lm(trials[[N]]$K[i,] ~ trials[[N]]$z[i,])$coefficients
    }

    # Plot the lapse rate of the lightest molecule in each trial
    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]),
    ylim = range(0, ab[[2]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
    ylab = "Temperature (Kelvins)",
    main = "Temperature vs. Altitude for\nDifferent System Sizes")
    grid()
    for(i in 1:M) lines(c(0, -ab[[i]][1, 1] / ab[[i]][1, 2]),
    c(ab[[i]][1, 1] * 2 / k.B, 0),
    col = i, lwd = 2)
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
    legend = paste(1:M, "-Molecule System", sep = ""))

    # Compute and plot altitude histograms
    zmax <- dmax <- 0
    histo <- list()
    for(i in 2:M){
    histo[[i]] <- hist(trials[[i]]$z[1,], plot = FALSE)
    dmax <- max(dmax, histo[[i]]$density)
    zmax <- max(zmax, histo[[i]]$breaks)
    }
    plot(NA, xlim = c(0, zmax), ylim = c(0, dmax), xlab = "Altitude (Meters)",
    ylab = "Probability Density (/Meter)",
    main = "Molecule-Presence Probability\nDensity as Function of Altitude")
    grid()
    for(i in M:2) lines(histo[[i]]$mids, histo[[i]]$density, col = i, lwd = 2)
    legend("topright", col = 2:M, lty = 1, lwd = 2, bty = "n",
    legend = paste(2:M, "-Molecule System", sep = ""))

    # Determine ratios of lapse rate to weight
    simulation.ratio <- numeric(M)
    for(i in 1:M) simulation.ratio[i] <-
    -initial.conditions(2)$m[1] * g / ab[[i]][1, 2]
    theoretical.ratio <- 3 * (1:M) – 2
    rbind(theoretical.ratio, simulation.ratio)

    # Plot the lapse rate of every molecule in the last trial
    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]),
    ylim = range(0, ab[[M]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
    ylab = "Temperature (Kelvins)",
    main = "Temperature vs. Altitude for\nDifferent Molecule Masses")
    grid()
    for(i in 1:M) lines(c(0, -ab[[M]][i, 1] / ab[[M]][i, 2]),
    c(ab[[M]][i, 1] * 2 / k.B, 0),
    col = i, lwd = 2)
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
    legend = paste(round(m / amu), "AMUs"), title = "Particle Mass")

  17. g = 9.8 # Gravitational acceleration, m/sec^2
    k.B = 1.38064852E-23 # Boltzmann's constant, J/K
    amu = 1.660539040E-27 # Atomic mass unit, kg
    T = 288 # Temperature, K
    
    gas = function(m, z0, v0, t, collision.prob = 0.5){
      N = length(m)
      if(length(z0) != N | length(v0) != N) 
        stop("m, z0, and v0 must be the same length")
      g = 9.8
      z1 = z0
      v1 = v0
      t1 = t[1]
      v = z = matrix(nrow = N, ncol = length(t))
      repeat{
        #  Decide whether (provisionally) to allow collision and, if collision would
        #  be allowed, which molecules would collide and when:
        tc = Inf
        colliders = NULL
        if(N > 1){
          for(i in 1:(N - 1)){
            for(j in (i + 1):N){
              if(collision.prob > runif(1)){
                tc.i = t1 - diff(z1[c(i, j)]) / diff(v1[c(i, j)])
                if(tc.i <= t1) next
                if(tc.i = t1 & t < t2)
        
        # Current interval's position and and velocity curves
        z[, interval] = z1 + v1 %*% t((t[interval] - t1)) + 
          rep(-g, N) %*% t((t[interval] - t1) ^ 2 / 2)
        v[, interval] = v1 + rep(-g, N) %*% t((t[interval] - t1))
        
        # for(i in 1:N) lines(t[interval], z[i, interval], col = i, lty = 3, lwd = 3)
        
        # Next interval's initial conditions:
        z1 = z1 + v1 * (t2 - t1) - g * (t2 - t1) ^ 2 / 2
        v1 = v1 - g * (t2 - t1)
        
        #  Implement collisions or bounces, whichever would come first:
        if(tc < tb){
          vc = v1
          for(i in 1:dim(colliders)[1]){
            z1[colliders[i,]] = rep(mean(z1[colliders[i,]]), 2)
            v1[colliders[i, 1]] = 
              ((-diff(m[colliders[i,]])) * vc[colliders[i, 1]] +
                 2 * m[colliders[i, 2]] * vc[colliders[i, 2]]) / 
              sum(m[colliders[i,]])
            v1[colliders[i, 2]] = v1[colliders[i, 1]] - diff(vc[colliders[i,]])
          }
        }else{
          v1[bouncers] = -v1[bouncers]
        }
        t1 = t2
        if(t[length(t)] < t1) break
      }
      list(t = t, z = z, v = v, K = 1/2 * m * v ^ 2)
    }
    
    
    # HERE'S WHAT THE TRAJECTORIES LOOK LIKE
    initial.conditions = function(N, m = NA, T = 288){
      if(missing(m)){
        m = seq(24.43433, 48.86866, length.out = N) * amu
      }else{
        if(length(m) != N) stop("Length of m must be N")
      } 
      E.avg = 3/2 * k.B * T  # Energy per molecule in one dimension
      E = N * E.avg * (r = runif(N)) / sum(r)
      v0 = sign(runif(N) - 0.5) * sqrt(2 * (KE = runif(N) * E) / m)
      z0 = (E - KE) / m / g
      list(m = m, z0 = z0, v0 = v0)
    }
    
    N = 4  # Number of molecules
    t = seq(0, 200, 0.1)
    
    inits = initial.conditions(N)
    m = inits$m
    z0 = inits$z0
    v0 = inits$v0
    trial = gas(m, z0, v0, t, 0.75)
    plot(NA, xlim = range(t), ylim = range(trial$z), xlab = "Time (Seconds)",
         ylab = "Altitude (Meters)", 
         main = paste(N, "-Particle-Gas Motion in One Dimension", sep = ""))
    grid()
    for(i in 1:N) lines(t, trial$z[i,], col = i, lwd = 2)
    
    
    #  TO TAKE STATISTICS, WE GENERATE LONG RECORDS, WITH DIFFERENT NUMBERS OF
    #  MOLECULES
    t = 0:1000000
    t = 0:1000
    M = 5
    trials = ab = list()
    ab[[1]] = matrix(c(3/2 * k.B * T, -m[1] * g), nrow = 1)
    for(N in 2:M){
      inits = initial.conditions(N)
      m = inits$m
      z0 = inits$z0
      v0 = inits$v0
      trials[[N]] = gas(m, z0, v0, t, 0.75)
      ab[[N]] = matrix(nrow = N, ncol = 2)
      for(i in 1:N) ab[[N]][i,] = 
        lm(trials[[N]]$K[i,] ~ trials[[N]]$z[i,])$coefficients
    }
    
    #  Plot the lapse rate of the lightest molecule in each trial
    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]), 
         ylim = range(0, ab[[2]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
         ylab = "Temperature (Kelvins)", 
         main = "Temperature vs. Altitude for\nDifferent System Sizes")
    grid()
    for(i in 1:M) lines(c(0, -ab[[i]][1, 1] / ab[[i]][1, 2]), 
                        c(ab[[i]][1, 1] * 2 / k.B, 0),
                        col = i, lwd = 2)   
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
           legend = paste(1:M, "-Molecule System", sep = ""))
    
    #  Compute and plot altitude histograms
    zmax = dmax = 0
    histo = list()
    for(i in 2:M){
      histo[[i]] = hist(trials[[i]]$z[1,], plot = FALSE)
      dmax = max(dmax, histo[[i]]$density)
      zmax = max(zmax, histo[[i]]$breaks)
    }
    plot(NA, xlim = c(0, zmax), ylim = c(0, dmax), xlab = "Altitude (Meters)",
         ylab = "Probability Density (/Meter)", 
         main = "Molecule-Presence Probability\nDensity as Function of Altitude")
    grid()
    for(i in M:2) lines(histo[[i]]$mids, histo[[i]]$density, col = i, lwd = 2)
    legend("topright", col = 2:M, lty = 1, lwd = 2, bty = "n",
           legend = paste(2:M, "-Molecule System", sep = ""))
    
    #  Determine ratios of lapse rate to weight
    simulation.ratio = numeric(M)
    for(i in 1:M) simulation.ratio[i] = 
      -initial.conditions(2)$m[1] * g / ab[[i]][1, 2]
    theoretical.ratio = 3 * (1:M) - 2
    rbind(theoretical.ratio, simulation.ratio)
    
    #  Plot the lapse rate of every molecule in the last trial
    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]), 
         ylim = range(0, ab[[M]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
         ylab = "Temperature (Kelvins)", 
         main = "Temperature vs. Altitude for\nDifferent Molecule Masses")
    grid()
    for(i in 1:M) lines(c(0, -ab[[M]][i, 1] / ab[[M]][i, 2]), 
                        c(ab[[M]][i, 1] * 2 / k.B, 0),
                        col = i, lwd = 2)   
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
           legend = paste(round(m / amu), "AMUs"), title = "Particle Mass")
    
  18. Here’s yet another try at not having code sections eaten:

    g = 9.8 # Gravitational acceleration, m/sec^2
    k.B = 1.38064852E-23 # Boltzmann's constant, J/K
    amu = 1.660539040E-27 # Atomic mass unit, kg
    T = 288 # Temperature, K
    
    gas = function(m, z0, v0, t, collision.prob = 0.5){
      N = length(m)
      if(length(z0) != N | length(v0) != N) 
        stop("m, z0, and v0 must be the same length")
      g = 9.8
      z1 = z0
      v1 = v0
      t1 = t[1]
      v = z = matrix(nrow = N, ncol = length(t))
      repeat{
        #  Decide whether (provisionally) to allow collision and, if collision would
        #  be allowed, which molecules would collide and when:
        tc = Inf
        colliders = NULL
        if(N > 1){
          for(i in 1:(N - 1)){
            for(j in (i + 1):N){
              if(collision.prob > runif(1)){
                tc.i = t1 - diff(z1[c(i, j)]) / diff(v1[c(i, j)])
                if(tc.i <= t1) next
                if(tc.i = t1 & t < t2)
        
        # Current interval's position and and velocity curves
        z[, interval] = z1 + v1 %*% t((t[interval] - t1)) + 
          rep(-g, N) %*% t((t[interval] - t1) ^ 2 / 2)
        v[, interval] = v1 + rep(-g, N) %*% t((t[interval] - t1))
        
        # for(i in 1:N) lines(t[interval], z[i, interval], col = i, lty = 3, lwd = 3)
        
        # Next interval's initial conditions:
        z1 = z1 + v1 * (t2 - t1) - g * (t2 - t1) ^ 2 / 2
        v1 = v1 - g * (t2 - t1)
        
        #  Implement collisions or bounces, whichever would come first:
        if(tc < tb){
          vc = v1
          for(i in 1:dim(colliders)[1]){
            z1[colliders[i,]] = rep(mean(z1[colliders[i,]]), 2)
            v1[colliders[i, 1]] = 
              ((-diff(m[colliders[i,]])) * vc[colliders[i, 1]] +
                 2 * m[colliders[i, 2]] * vc[colliders[i, 2]]) / 
              sum(m[colliders[i,]])
            v1[colliders[i, 2]] = v1[colliders[i, 1]] - diff(vc[colliders[i,]])
          }
        }else{
          v1[bouncers] = -v1[bouncers]
        }
        t1 = t2
        if(t[length(t)] < t1) break
      }
      list(t = t, z = z, v = v, K = 1/2 * m * v ^ 2)
    }
    
    
    # HERE'S WHAT THE TRAJECTORIES LOOK LIKE
    initial.conditions = function(N, m = NA, T = 288){
      if(missing(m)){
        m = seq(24.43433, 48.86866, length.out = N) * amu
      }else{
        if(length(m) != N) stop("Length of m must be N")
      } 
      E.avg = 3/2 * k.B * T  # Energy per molecule in one dimension
      E = N * E.avg * (r = runif(N)) / sum(r)
      v0 = sign(runif(N) - 0.5) * sqrt(2 * (KE = runif(N) * E) / m)
      z0 = (E - KE) / m / g
      list(m = m, z0 = z0, v0 = v0)
    }
    
    N = 4  # Number of molecules
    t = seq(0, 200, 0.1)
    
    inits = initial.conditions(N)
    m = inits$m
    z0 = inits$z0
    v0 = inits$v0
    trial = gas(m, z0, v0, t, 0.75)
    plot(NA, xlim = range(t), ylim = range(trial$z), xlab = "Time (Seconds)",
         ylab = "Altitude (Meters)", 
         main = paste(N, "-Particle-Gas Motion in One Dimension", sep = ""))
    grid()
    for(i in 1:N) lines(t, trial$z[i,], col = i, lwd = 2)
    
    
    #  TO TAKE STATISTICS, WE GENERATE LONG RECORDS, WITH DIFFERENT NUMBERS OF
    #  MOLECULES
    t = 0:1000000
    t = 0:1000
    M = 5
    trials = ab = list()
    ab[[1]] = matrix(c(3/2 * k.B * T, -m[1] * g), nrow = 1)
    for(N in 2:M){
      inits = initial.conditions(N)
      m = inits$m
      z0 = inits$z0
      v0 = inits$v0
      trials[[N]] = gas(m, z0, v0, t, 0.75)
      ab[[N]] = matrix(nrow = N, ncol = 2)
      for(i in 1:N) ab[[N]][i,] = 
        lm(trials[[N]]$K[i,] ~ trials[[N]]$z[i,])$coefficients
    }
    
    #  Plot the lapse rate of the lightest molecule in each trial
    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]), 
         ylim = range(0, ab[[2]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
         ylab = "Temperature (Kelvins)", 
         main = "Temperature vs. Altitude for\nDifferent System Sizes")
    grid()
    for(i in 1:M) lines(c(0, -ab[[i]][1, 1] / ab[[i]][1, 2]), 
                        c(ab[[i]][1, 1] * 2 / k.B, 0),
                        col = i, lwd = 2)   
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
           legend = paste(1:M, "-Molecule System", sep = ""))
    
    #  Compute and plot altitude histograms
    zmax = dmax = 0
    histo = list()
    for(i in 2:M){
      histo[[i]] = hist(trials[[i]]$z[1,], plot = FALSE)
      dmax = max(dmax, histo[[i]]$density)
      zmax = max(zmax, histo[[i]]$breaks)
    }
    plot(NA, xlim = c(0, zmax), ylim = c(0, dmax), xlab = "Altitude (Meters)",
         ylab = "Probability Density (/Meter)", 
         main = "Molecule-Presence Probability\nDensity as Function of Altitude")
    grid()
    for(i in M:2) lines(histo[[i]]$mids, histo[[i]]$density, col = i, lwd = 2)
    legend("topright", col = 2:M, lty = 1, lwd = 2, bty = "n",
           legend = paste(2:M, "-Molecule System", sep = ""))
    
    #  Determine ratios of lapse rate to weight
    simulation.ratio = numeric(M)
    for(i in 1:M) simulation.ratio[i] = 
      -initial.conditions(2)$m[1] * g / ab[[i]][1, 2]
    theoretical.ratio = 3 * (1:M) - 2
    rbind(theoretical.ratio, simulation.ratio)
    
    #  Plot the lapse rate of every molecule in the last trial
    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]), 
         ylim = range(0, ab[[M]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
         ylab = "Temperature (Kelvins)", 
         main = "Temperature vs. Altitude for\nDifferent Molecule Masses")
    grid()
    for(i in 1:M) lines(c(0, -ab[[M]][i, 1] / ab[[M]][i, 2]), 
                        c(ab[[M]][i, 1] * 2 / k.B, 0),
                        col = i, lwd = 2)   
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
           legend = paste(round(m / amu), "AMUs"), title = "Particle Mass")
    
  19. Now we’ll try the “code” tag:

    g <- 9.8 # Gravitational acceleration, m/sec^2
    k.B <- 1.38064852E-23 # Boltzmann's constant, J/K
    amu <- 1.660539040E-27 # Atomic mass unit, kg
    T <- 288 # Temperature, K

    gas <- function(m, z0, v0, t, collision.prob = 0.5){
    N <- length(m)
    if(length(z0) != N | length(v0) != N)
    stop("m, z0, and v0 must be the same length")
    g <- 9.8
    z1 <- z0
    v1 <- v0
    t1 <- t[1]
    v <- z <- matrix(nrow = N, ncol = length(t))
    repeat{
    # Decide whether (provisionally) to allow collision and, if collision would
    # be allowed, which molecules would collide and when:
    tc <- Inf
    colliders 1){
    for(i in 1:(N - 1)){
    for(j in (i + 1):N){
    if(collision.prob > runif(1)){
    tc.i <- t1 - diff(z1[c(i, j)]) / diff(v1[c(i, j)])
    if(tc.i <= t1) next
    if(tc.i < tc){
    tc <- tc.i
    colliders <- matrix(c(i, j), nrow = 1)
    }else if(tc.i == tc){
    colliders <- rbind(colliders, c(i, j))
    }
    }
    }
    }
    }

    # Determine provisional bounce time and which molecules would bounce
    tbs <- numeric(N)
    for(i in 1:N) tbs[i] <- max(Re(polyroot(c(z1[i], v1[i], -g / 2))))
    tb <- min(tbs)
    bouncers <- which(tbs == tb)
    tb <- tb + t1

    # End of current interval is earlier of provisional collision and bounce
    # times:
    t2 <- min(tc, tb)
    interval = t1 & t < t2)

    # Current interval's position and and velocity curves
    z[, interval] <- z1 + v1 %*% t((t[interval] - t1)) +
    rep(-g, N) %*% t((t[interval] - t1) ^ 2 / 2)
    v[, interval] <- v1 + rep(-g, N) %*% t((t[interval] - t1))

    # for(i in 1:N) lines(t[interval], z[i, interval], col = i, lty = 3, lwd = 3)

    # Next interval's initial conditions:
    z1 <- z1 + v1 * (t2 - t1) - g * (t2 - t1) ^ 2 / 2
    v1 <- v1 - g * (t2 - t1)

    # Implement collisions or bounces, whichever would come first:
    if(tc < tb){
    vc <- v1
    for(i in 1:dim(colliders)[1]){
    z1[colliders[i,]] <- rep(mean(z1[colliders[i,]]), 2)
    v1[colliders[i, 1]] <-
    ((-diff(m[colliders[i,]])) * vc[colliders[i, 1]] +
    2 * m[colliders[i, 2]] * vc[colliders[i, 2]]) /
    sum(m[colliders[i,]])
    v1[colliders[i, 2]] <- v1[colliders[i, 1]] - diff(vc[colliders[i,]])
    }
    }else{
    v1[bouncers] <- -v1[bouncers]
    }
    t1 <- t2
    if(t[length(t)] < t1) break
    }
    list(t = t, z = z, v = v, K = 1/2 * m * v ^ 2)
    }

    # HERE'S WHAT THE TRAJECTORIES LOOK LIKE
    initial.conditions <- function(N, m = NA, T = 288){
    if(missing(m)){
    m <- seq(24.43433, 48.86866, length.out = N) * amu
    }else{
    if(length(m) != N) stop("Length of m must be N")
    }
    E.avg <- 3/2 * k.B * T # Energy per molecule in one dimension
    E <- N * E.avg * (r <- runif(N)) / sum(r)
    v0 <- sign(runif(N) - 0.5) * sqrt(2 * (KE <- runif(N) * E) / m)
    z0 <- (E - KE) / m / g
    list(m = m, z0 = z0, v0 = v0)
    }

    N <- 4 # Number of molecules
    t <- seq(0, 200, 0.1)

    inits <- initial.conditions(N)
    m <- inits$m
    z0 <- inits$z0
    v0 <- inits$v0
    trial <- gas(m, z0, v0, t, 0.75)
    plot(NA, xlim = range(t), ylim = range(trial$z), xlab = "Time (Seconds)",
    ylab = "Altitude (Meters)",
    main = paste(N, "-Particle-Gas Motion in One Dimension", sep = ""))
    grid()
    for(i in 1:N) lines(t, trial$z[i,], col = i, lwd = 2)

    # TO TAKE STATISTICS, WE GENERATE LONG RECORDS, WITH DIFFERENT NUMBERS OF
    # MOLECULES
    t <- 0:1000000
    t <- 0:1000
    M <- 5
    trials <- ab <- list()
    ab[[1]] <- matrix(c(3/2 * k.B * T, -m[1] * g), nrow = 1)
    for(N in 2:M){
    inits <- initial.conditions(N)
    m <- inits$m
    z0 <- inits$z0
    v0 <- inits$v0
    trials[[N]] <- gas(m, z0, v0, t, 0.75)
    ab[[N]] <- matrix(nrow = N, ncol = 2)
    for(i in 1:N) ab[[N]][i,] <-
    lm(trials[[N]]$K[i,] ~ trials[[N]]$z[i,])$coefficients
    }

    # Plot the lapse rate of the lightest molecule in each trial
    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]),
    ylim = range(0, ab[[2]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
    ylab = "Temperature (Kelvins)",
    main = "Temperature vs. Altitude for\nDifferent System Sizes")
    grid()
    for(i in 1:M) lines(c(0, -ab[[i]][1, 1] / ab[[i]][1, 2]),
    c(ab[[i]][1, 1] * 2 / k.B, 0),
    col = i, lwd = 2)
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
    legend = paste(1:M, "-Molecule System", sep = ""))

    # Compute and plot altitude histograms
    zmax <- dmax <- 0
    histo <- list()
    for(i in 2:M){
    histo[[i]] <- hist(trials[[i]]$z[1,], plot = FALSE)
    dmax <- max(dmax, histo[[i]]$density)
    zmax <- max(zmax, histo[[i]]$breaks)
    }
    plot(NA, xlim = c(0, zmax), ylim = c(0, dmax), xlab = "Altitude (Meters)",
    ylab = "Probability Density (/Meter)",
    main = "Molecule-Presence Probability\nDensity as Function of Altitude")
    grid()
    for(i in M:2) lines(histo[[i]]$mids, histo[[i]]$density, col = i, lwd = 2)
    legend("topright", col = 2:M, lty = 1, lwd = 2, bty = "n",
    legend = paste(2:M, "-Molecule System", sep = ""))

    # Determine ratios of lapse rate to weight
    simulation.ratio <- numeric(M)
    for(i in 1:M) simulation.ratio[i] <-
    -initial.conditions(2)$m[1] * g / ab[[i]][1, 2]
    theoretical.ratio <- 3 * (1:M) - 2
    rbind(theoretical.ratio, simulation.ratio)

    # Plot the lapse rate of every molecule in the last trial
    plot(NA, xlim = range(0, -ab[[M]][1, 1] / ab[[M]][1, 2]),
    ylim = range(0, ab[[M]][1, 1] * 2 / k.B), xlab = "Altitude (Meters)",
    ylab = "Temperature (Kelvins)",
    main = "Temperature vs. Altitude for\nDifferent Molecule Masses")
    grid()
    for(i in 1:M) lines(c(0, -ab[[M]][i, 1] / ab[[M]][i, 2]),
    c(ab[[M]][i, 1] * 2 / k.B, 0),
    col = i, lwd = 2)
    legend("topright", bty = "n", lty = 1, lwd = 2, col = 1:M,
    legend = paste(round(m / amu), "AMUs"), title = "Particle Mass")

  20. What you would have seen is that it simulates a one-dimensional gas in which (a necessarily small number of) molecules in a gravitational field sometimes collide and sometimes pass through each other.

  21. If you simulate something like a million seconds each for two-, three-, four-, and five-molecule systems, and if for each system regress one molecule’s kinetic energy (temperature) against altitude, you get the following illustration that the lapse rate falls as the number of molecules increases.

  22. Finally, you’d see that within a given gas system the different-molecular-mass constituents have different lapse rates. So at an altitude above zero they maintain different temperatures: temperatures of intimately mixed constituents differ without heat flow between them.

  23. However, I’ve read that the error for the absolute type of sensor (Non-vented) is +/- 2 cm*

    *Because two sensors are required – the errors combine. As both atmospheric pressure and water pressure are measured separately.

  24. I wonder why pressure/depth sensors aren’t being used, as wave motion cancels at the scale found at typical tidal stations. The error for a gauged/vented sensor is just +/- 1 cm.

    However, I’ve read that the error for the absolute type of sensor (Non-vented) is +/- 2 cm*

    *Because two sensors are required – the errors combine. As both atmospheric pressure and water pressure are measured separately.

  25. Warming did happen, from mid-1970s to late 1990s, but it was not, primarily, driven by CO₂.

    Climate Change “Problem” Solved – its Natural. Conclusions:

    – Climate change during recent centuries is periodic
    – Warming since 1870, attributed to CO₂, is really caused by ~200 year (solar) De Vries Cycle
    – Present cooling and increased warming (1970-1997) is due to 65-year AMO/PDO cycles
    – There is no trace of CO₂ causing warming.

    Prof Weiss, youtube:


    Paper:- H.-J. Lüdecke, C. O. Weiss, and A. Hempelmann, 2015. doi:10.5194/cpd-11-279-201

  26. B”y now the causes are obvious. High among them are…

    Incompetent government licensing. Until recently, in the US companies received construction permits based on incomplete plans. Then applied for an operating license, often leading to rebuilding and long delays. …

    Every-changing government policy, often highly adverse.

  27. ==> Willis Eschenbach (December 23, 2017 at 7:26 pm)

    Willis, I want to question this (Your prioritisation of Kirchhoff’s law), as I’ve tried to get a good answer from other sources (I’m sure there would be a simple and sensible answer, that you might offer. One that I’ve failed to find! ;-)

    When researching this several years ago, I came across a PHD physicist who retracted a paper because of this exact issue. He had confused emission and absorption by prioritising Kirchhoff* over Planck**! He had made the mistake of assuming Kirchhoff’s law to be true for all frequencies and materials but this is not the case.

    I mention this only because it appears to be an often confused issue, even for the highly trained. I’m not even remotely in the category of these professionals and that is the point, are we – you – sure that what you are saying is clearly understood, even by those we expect to know these things?

    In my “unwashed” layman’s terms, snow is a white body for sunlight but a black body for heat and even in that “IR” spectrum there is some ill-defined overlap between SW and LW.

    Willis, in response to Ron Clutz (December 23, 2017 at 7:04 pm) you say:

    “Kirchoff’s Law says that absorptivity is equal to emissivity…”

    And yet you quote figures for IR emissivity (9-12 microns) and list fresh snow as 0.99. Yet Ron Clutz had spoken about sunlight*** and therefore, strictly speaking your figure differs from the actual value, which has at maximum a value 0.30 absorptivity for sunlight – that he was presumably speaking of.

    The observation of a material-specific (Snow in this case) difference with regard to absorption and emission is not inconsistent with a good emitter simultaneously being a good absorber. The differences is that absorption and emission are dependent on the wavelength range.

    In the context provided above, what is it that you are specifically disagreeing with in statement of Ron Klutz?***

    *Kirchhoff’s law – “Emission and Absorption are equal”
    **Planck’s law – “Emission is dependent upon the wavelength and the absolute temperature”
    ***”Radiation is only heat if the exposed material absorbs it. Solar radiation is high energy, absorbed by both land and sea and warmed by it. The bit of far longwave radiation from the cool atmosphere is not comparable.” – Ron Clutz

  28. Harriet Harman and Tessa Jowel,
    Both of who’m I’m not a fan.
    They got together with a rotten scheme,
    To implement their evil smoking ban.

    A decade later we now have tories,
    To sell us yet more rotten stories.
    Tales of woe the sky is falling,
    Terrifying! Global Warming!

    And now as if that’s not bad enough,
    Times are about to get more tough.
    With Climate Change and rising seas,
    You’d think we’d be in it up to our knees!

    But don’t forget the Poley Bears,
    We’re about to lose a few more hairs.
    They tell us that the poles are melting,
    And soon we’ll all be sweltering.

    And don’t forget our coloured cousins,
    With them we’re supposed to integrate.
    But every time we try just that,
    They just want to segregate.

    Just when you think its gone far enough,
    They want to make it yet more tough.
    To live our lives is quite a feat,
    They want to tax our bloody meat!

    Now Labour has a brand new champion,
    But I don’t want him as my companion.
    His followers know him as Comrade Corbyn,
    I think he belongs in a dustbin!

    But maybe there’s a glimmer of hope,
    And if we stand together we may cope.
    Their rotten lies may finally end,
    Before they drive us round the bend!

    In God we trust in all our lives,
    To get us all through our strives.
    To end their threat to our liberty,
    We must all fight in sincerity.

    Harriet Harman and Tessa Jowel,
    Both of who’m I find quite foul.
    And all the bloody rest of them,
    should rot away and howl!

    Merry Christmas to all! ;)

  29. I have given up on posting on this site because most of my posts get deleted I asked why but never got an answer. Others have complained about this as well.

  30. Anthony, I have tried 3 times (twice yesterday and once today) to post a comment to Willis’ blog article “Been There, Exceeded That”. Have I fallen foul of the phantom blog impersonator that we had to deal with a year or so ago? All the best, David Cosserat

  31. => Nick Stokes January 11, 2018 at 1:31 am

    “Trenberth’s calculation is very simple. It just multiplies the world’s average rainfall (about 900 mm/yr) by the latent heat of evaporation. Do you think the basis is wrong? Or the rainfall is underestimated”

    The calculation may be simple but the issue clearly isn’t! Just the thought of the “Pan Evaporation Paradox” and the countless papers attending to it, make it clear that the issue is far from simple; but isn’t that the heart of the criticism of it here!

    It is not very hard to see, that “the basis is wrong” and that “rainfall is underestimated”!

    As for the basis, you are making the argument – for Trenberth – that evaporation is the only way to get H2O (In any or all its phases) into the atmosphere, are you not.

    Now I’m immediately thinking how it can** and to quote the poet – “Let me count the ways”! ;-)

    Speaking of numbers, there are approximately a “gazillion” ;-) papers that have been peer reviewed and published in the last century on what is arguably the single most important “way”.

    Known to the layman as sea spray it is technically called “entrainment”. And this contribution from the ocean atmospheric boundary layer under windy conditions is well know and understood to be huge!

    Huge enough, that it “is necessary to take into account storm-caused enhancement of the energy and mass transfer through the ocean surface when constructing climate models and models of general circulation of the atmosphere and ocean, and also when devising methods of long-term weather forecasting.” (Dubov), (Marchuk).

    So, we have according to a vast body of literature* that via this mechanism: “even during a brief stormy period, the ocean is able to deliver to the atmosphere enormous amounts of extra heat and moisture, which can alter substantially the state of the atmosphere over vast regions.” (R.S. Bortkovskii)

    And the key here, is that it is kinetic energy that delivers the water vapour to the atmosphere and not the latent heat of evaporation (The temperature of the boundaries determines how much heat is also exchanged but vaporisation is not dependant on the relative temperatures). Additionally, regarding this heat flux:

    “When the air temperature is quite low (in high latitudes, for example) the spray sensible heat flux can be roughly as large as the spray latent heat flux. In temperate and tropical latitudes, however, the spray latent heat flux virtually always dominates the sensible heat flux. The magnitude of this flux can be quite large. In a 20-m/s wind, in low latitudes, a typical magnitude for the spray latent heat flux is 150 W/m(squared), which is the same order of magnitude as the interfacial latent heat flux.

    Now on a personal note and at the risk of sounding Willis-like, I came across one of the “other ways” while in Zermatt Switzerland! Last year, in the European Alps, I observed and photographed a well known phenomenon, powder snow blowing off the high peaks and forming cirrus clouds:

    Later, in the Dolomites of Italy at altitude again, I met a meteorologist measuring ice core temperatures and we discussed my observation. It wasn’t at all new to him that water vapour in the atmosphere could find its way there independently of the latent heat of evaporation!

    There is much more to this but it it is now very late in a very long day!

    *See Edgar L Andreas, 1992, Sea Spray and Turbulent Air-Sea Heat Fluxes

    **Wind! Think, the Southern Ocean and The Roaring Forties. It’s as good or better than insolation or LWIR!
    Every turbulent stream rapid or waterfall on earth that did or didn’t cast a rainbow.
    Geothermal (Think, magma meets water/ocean… since time began!)
    Storms, cyclones and tornadoes of course and waterspouts at sea – observed much in my youth – that suck up ocean water and anything in it. (My good friend’s ship got hit by one and it disgorged a tonnage of water. And here in Australia, in my lifetime there have been two occasions when fish fell from the sky – along with precipitation – many miles inland!;-)

  32. It’s all evaporation. And it all takes heat from the surface and transports it (as LH) to higher altitude.

    No Nick, even Trenberth admits that the points I’ve raised are worthy of ongoing study. Latent heat is not the only and singular path for water vapour in the atmosphere! And for what it’s worth, I have read his infamous papers!

  33. Talk about Ozploitation!

    This toilet paper has got to go down in history as the finest example of political talking points parading as science, ever written.

    It is so dumb it’s not even wrong!

    For a start, at the time humans arrived, Australia’s inland was covered by vast mega lakes – the remains of the Eromanga Sea:

    …the environment was already changing by the time the first Australians arrived. The overflowing mega-lakes of pre-50,000 years ago had begun to shrink, and reliable supplies of freshwater were in a state of collapse.

    *

    The point is, humans arrived at a time of lowering sea level when the inland was a drying sea. From that time to the present date the inland extent actually expanded while sea levels slowly rose, enough to inundate the shallow land bridge but not the – below sea level – basins of the outback!

    These inland mega-lakes were fed by big rivers such as Cooper Creekand the Diamantina River, which pumped large volumes of water into the continental interior every year to fill the lakes to the levels shown by the position of their ancient beaches. Mega-Lake Eyre held roughly ten times the water volume achievable under today’s wettest climate, and if present now would rank among the ten largest lakes (in area) on Earth. This truly was the inland sea that proved so elusive to Charles Sturt and other 19th-century colonial explorers.

    *

    It is interesting to note:

    “To the surprise of the early mariners who explored Australia’s coastline none of them discovered the mouth of any great river. Consequently, explorers including Flinders, Banks, Oxley, Sturt and King, all assumed that rivers flowing inland from the Great Dividing Range must flow towards an Inland Sea (Flannery 1998, 226; Johnson 2001, 21).”

    They never found the Sea but a huge body of water still exists today, not on the surface but hidden beneath: The Great Artesian Basin.

    “The basin occupies roughly the same area as the Eromanga Sea, the major portion of the water flowing slowly underground from the Great Dividing Range in north Queensland towards South Australia.”

    * “Species-specific responses of Late Quaternary megafauna to climate and humans”: Nature 479, 359–364 (17 November 2011) doi:10.1038/nature10574

  34. Talk about natural climate variation, Lake Eyre fills only intermittently today:

    Minor Flooding: Up to 2 m water covering half the lake: once in 3 years.

    Major Flooding: Up to 4.5 m water covering all 8,000 [km.sup.2] of the lake: once in 10 years.

    Filling: Filling another 50 cm: 2-4 times per century.

    Great Filling: More than 5 m water: 2-4 times per millennium. (Kotwicki 1986)

  35. “Odyssey from Africa (and the Adventures of Ipiki)” is an epic narrative poem telling the story behind the 60,000 years-ago exodus of modern humans from Africa that populated the rest of the world.

  36. Yes, and this theory aligns with the measured data!

    This post also highlights a feeling I’ve had for some time, that both sides are going out of their way to avoid discussing the Pan Evaporation Paradox.

    I think it is because they all have a dog in the game. The data is disruptive because the cause doesn’t have to be explained for the damage to be done and a number of precious theories have been struck a mortal blow!

    If climate is warming, a more energetic hydrologic cycle is expected implying an increase in evaporation. However, observations of pan evaporation across the U.S. and the globe show a decreasing trend in pan evaporation. – J.A. Ramirez, Colorado State University

    And it doesn’t matter where it is measured – wet or dry, desert or tropics, the trend has been down for 68* years to date!

    *For 50 years(1950-2000) the trend was sharply down, before a slight recovery 2000-2010 but sharply down again since then(Back to the near lowest levels of 1993).

  37. Are These Coal Plants “tripping off” because of over heating?
    It seems like news reports are written in a way that suggest that the coal plants are overheating. Poster benben seems to think similarly. The second quote below indicates the media suffers from lousy standards of clarity in it’s reporting.
    For example:
    http://reneweconomy.com.au/coal-unit-trips-in-heatwave-as-tesla-big-battery-cashes-in-85623/

    The Australia Institute, which has documented the coal outages this year and produced a report on the intermittency of coal generators, argues that there should be a reliability obligation for coal and gas plants.

    The report found that over the month of February in 2017, 14 per cent (3600MW) of coal and gas electricity generation capacity across the NEM failed during critical peak demand periods in three states as a result of faults, largely related to the heat.

    A certain irony in this context of the idea of a “reliability obligation”!

    http://reneweconomy.com.au/nsw-coal-fleet-feels-heat-state-risk-system-black-96770/
    Refers to a report by the Energy Security Taskforce.

    The report was commissioned by the NSW government to examine risks to the resilience of the state’s electricity system after it came under pressure on in February during a late summer heatwave, when four major coal and gas units failed in the heat.

    The incident, on February 10, 2017, saw the state narrowly escape a major, grid-wide outage when the capacity of available large thermal generators fell by about 805MW during the peak demand period, largely due to high ambient temperatures and cooling pond temperature limits.

    “Risks from extreme weather are likely to continue to increase and test the resilience of the (NSW) system”, the report says. “Large coal thermal plant generally will not perform as well in extreme hot weather and can also have output limited by environmental constraints, for example, cooling pond temperature limits.”

    A reasonable working theory is:
    I1) A failure of all the recent Assie administrations to deal with the conditions of the climate that we have now and have had for some decades if not the entire history of the Australian electrical grid.
    2) That politicians and campaigners can point fingers at coal plants and warming is a bonus in a game of denial and diversion.

    A missing piece of the data are the recent trends in summer electricity demands.

  38. Fascinating. I see not one, but three subduction zones near the northern and eastern borders of Bangladesh.

    Also this from wikipedia about the effects of the 2004 Indian Ocean Earthquake:

    “There was 10 m (33 ft) movement laterally and 4–5 m (13–16 ft) vertically along the fault line. Early speculation was that some of the smaller islands south-west of Sumatra, which is on the Burma Plate (the southern regions are on the Sunda Plate), might have moved south-west by up to 36 m (120 ft), but more accurate data released more than a month after the earthquake found the movement to be about 20 cm (8 in).[38] Since movement was vertical as well as lateral, some coastal areas may have been moved to below sea level. The Andaman and Nicobar Islands appear to have shifted south-west by around 1.25 m (4 ft 1 in) and to have sunk by 1 m (3 ft 3 in).[39]”

    https://en.wikipedia.org/wiki/2004_Indian_Ocean_earthquake_and_tsunami

  39. Fascinating. I see not one, but three subduction zones near the northern and eastern borders of Bangladesh.

    Also this from wikipedia about the effects of the 2004 Indian Ocean Earthquake:

    “There was 10 m (33 ft) movement laterally and 4–5 m (13–16 ft) vertically along the fault line. Early speculation was that some of the smaller islands south-west of Sumatra, which is on the Burma Plate (the southern regions are on the Sunda Plate), might have moved south-west by up to 36 m (120 ft), but more accurate data released more than a month after the earthquake found the movement to be about 20 cm (8 in).[38] Since movement was vertical as well as lateral, some coastal areas may have been moved to below sea level. The Andaman and Nicobar Islands appear to have shifted south-west by around 1.25 m (4 ft 1 in) and to have sunk by 1 m (3 ft 3 in).[39]”

    https://en.wikipedia.org/wiki/2004_Indian_Ocean_earthquake_and_tsunami

  40. Is it irrational to the “father”? – Toneb

    Sorry to burst your bubble but you have just illustrated why your own argument is illogical.
    This father has already made the wrong choice, the decision to let his daughter travel in any vehicle other than by plane already exposed her to a hundredfold* increase in risk!

    *A 1% chance of death for a car versus 0.01% in a plane!

    Statistically speaking, flying is far safer than driving. However, it may feel more dangerous because risk perception is based on more than facts. – David Ropeik, Harvard School of Public Health.

  41. Someone asked a “what if” question on Roger Pielke’s Twitter feed for this graph.

    one q: if there had been no “climate diplomacy” how much would fossil fuel consumption have increased? // is there a comparison 25 years to compare it to?

    Roger’s answer:

    Great Q.
    1980-1992 FF increased 1.6%/yr
    1992-2016 1.6%/yr

  42. Figure 1. Satellite-measured sea level rise. Errors shown are 95% confidence intervals. Data Source

    That data source from Colorado University’s Sea Level Group is 18 months old, the last entry is 2016.5512

    The last entry from NASA’s Data is 2017.8521170

    Besides that Kip Hansen’s post earlier last month demonstrated that NASA is lowering the earlier rate of sea level rise which in effect allows the claim of acceleration to be made here’s his graph/animation from that post:

    If CU’s Sea Level Group ever publishes a new release it will be interesting to see what they say. After all, over the years, they’ve been telegraphing what they expect to find. All you have to do is read the titles of their various publications

    Why has an acceleration of sea lever rise not been observed during the altimeter era?

    NASA Satellites Detect Pothole on Road to Higher Seas

    Is the detection of accelerated sea level rise imminent?

  43. The adiabatic heating prediction by Holmes is correct to the extent of the accuracy of the ideal gas law to model the states of atmospheric air. As noted by many commenters, an alternative equation of state could be selected to improve accuracy.

    However, this use of an equation of state to calculate a temperature of a given air mass at a known state (ground-level) is an improper use of the thermodynamic equations. Even if one accepts the dubious assumption of adiabatic heating, the use of an equation of state in the form of change in Pressure/Volume (expressed in the form of molar density as you please) results in a prediction of change in temperature between State 1 and State 2 consistent with the assumptions embraced (adiabatic and constant mass in this instance).

    In short, the proffered calculation is a prediction of what engineers call PV-work expressed as a temperature change from some (in this article) unstated reference condition wherein the PV work would be zero m3-kPa. What the number is not is a prediction of the actual temperature. Many who have enjoyed the North American winter will attest that ground-level air temperature can vary quite widely despite relatively small changes in barometric pressure.

    The PV work equation could be as easily used with an adiabatic and isothermal (constant temperature) assumption which would predict exactly zero temperature change (well, duh) and a change in molar density. The equation is useful to calculate a change of energetic condition between two given states; it is not useful to a prior calculate the temperature of a single, given state.

  44. You are so far left (Far gone.) – and therefore so dumbed-down – that you can’t even write an intelligible sentence, much less form a rational argument!

    In what strange universe could the following line even remotely approach the truth:

    ya im finding the same thing all over the world. renewables are winning. unsubsidised. – Steven Mosher

    That fantasy realm resides in your own head and while it most certainly would appear immanent* to you, it is rather less than “imminent” for the rest of us!**

    *Immanent as apposed to imminent!
    **Everyone but you Steven! That same “us” that you presume to speak for!

  45. Thanks for the heads-up Nick.

    If I was a policy maker, I might have been mislead by the technical summary for policymakers!

    The forward lead me astray from the start:

    “The report confirms that warming in the climate system is unequivocal, with many of the observed changes unprecedented over decades to millennia: warming of the atmosphere and the ocean, diminishing snow and ice, rising sea levels and increasing concentrations of greenhouse gases. Each of the last three decades has been successively warmer at the Earth’s surface than any preceding decade since 1850.

    These and other findings confirm and enhance our scientific understanding of the climate system and the role of greenhouse gas emissions; as such, the report demands the urgent attention of both policymakers and the general public.”

    Now I see only errors rather than any deliberate deception on the part of the authors!
    Thanks to your advise, I can now just ignore the section on detection and attribution of climate change:

    D.3 Detection and Attribution of Climate Change

    Human influence has been detected in warming of the atmosphere and the ocean, in changes in the global water cycle, in reductions in snow and ice, in global mean sea level rise, and in changes in some climate extremes (see Figure SPM.6 and Table SPM.1). This evidence for human influence has grown since AR4. It is extremely likely that human influence has been the dominant cause of the observed warming since the mid-20th century. {10.3–10.6, 10.9}

    Thank goodness, you are here to help me read between the lines.

    It is surprising to see just how misinformed the uninformed* might be after reading this document!!

    *The non-technical i.e. Policymakers!
    **Somehow, high latitudes, NH, Spring, last and next centuries all got lost in translation ;-)

    [Thank you for testing the formats here. .mod]

  46. ==>frank climate

    The second quote should have had my bold added:

    Human influence has been detected in warming of the atmosphere and the ocean, in changes in the global water cycle, in reductions in snow and ice…

    I don’t believe sarcasm and satire are necessarily the same thing, perhaps I should have employed a “/wit ” tag also! ;-)

  47. The only people fighting more observation are the skeptics who demanded more observational evidence.

    That’s funny given that the IPCC went out of there way to ignore the entire observational record of C02 in favour of proxy data on which they could tack in an instrumental record*

    Yeah, forget some 90,000 direct and accurate measurements made from rockets and balloons and use proxy data from low resolution ice cores instead! It is not the skeptics fighting more observations, it is the fanatics like you who are frightened by the real!

    *The Keeling Curve is probably where M.Mann got his inspirational idea.

  48. Before we had the Keeling curve*, there were many thousands of chemical measurements from rockets, and balloons. Like Michael Mann, Keeling tacked instrumental data onto a proxy record (Ice cores.) It is a fact that the IPCC ignores the entire record of direct and accurate measurement data (Some 90,000 samples.) that might have been used to reconstruct a real CO2 contour over the last 200 years. This data corroborates recent stomatal studies that show dynamic fluctuation in background concentrations of C02.

    In former times much higher concentrations were measured compared to today (e.g. around 480 pmm(1820), 388 pmm(1857) and 430 pmm(1942).)
    The 19th century average CO2 concentration was 341 ppm compared to the modern 400 ppm.

    Stomatal studies have demonstrated that CO2 levels were significantly higher than is usually reported, up to 425 ppm about 12,750 years ago for example.

    *Callendar’s “Fuel Line“ was the progenitor.

  49. Thank you, a more apt description of the IPCC process has probably never been written:

    It’s an abomination and abuse of science when people pick whatever is suitable to show what they want to be true, without being aware of (or taking into account) the debates that go on in the literature and behind the scenes. – Kristi Silber

    Before we had the Keeling curve*, there were many thousands of chemical measurements from rockets, and balloons. It is a fact that the IPCC ignores the entire record of direct and accurate measurement data that might have been used to reconstruct a real CO2 contour over the last 200 years. That real data corroborates recent stomatal studies that show dynamic fluctuation in background concentrations of C02.

    In the past two centuries the CO2 flux has been dynamic and higher concentrations were measured compared to today (e.g. around 480 pmm(1820), 388 pmm(1857) and 430 pmm(1942).) The 19th century average CO2 concentration was 341 ppm – according to instrumental measurement – compared to the modern 400 ppm from Mauna Loa.

    Stomatal studies have demonstrated that CO2 levels were significantly higher than is usually reported, up to 425 ppm about 12,750 years ago for example.

    *Callendar’s “Fuel Line“ was the progenitor.

  50. ==>Kent Clizbe

    I can’t stand Larry Kummer’s writing either. His missives* actually make my stomach churn. I’m obviously not arguing against the person* – someone I’ve never met – but I am totally against “his” position! I distrust this writer more than any one I have ever read. The patronising persona he portrays in comments to his own posts is particular ridiculous***. It is a constant mystery to me as to why this “figure” – for want of a better word – is given a platform on WUWT and that makes me question every assumption I have about the truth of the reality of this forum. ;-(

    * With the emphasis on miss, i.e. the verb, fail to hit or reach…etc!
    **ad hominem.
    ***Ridiculous to me, of course!

  51. I think you may be trying to lead me, however the authors title is at the top of this post:

    By Larry Kummer. From the Fabius Maximus website

    You would be living in a very small world indeed if you hadn’t heard of Fabian Socialism. That group named themselves after the Roman statesman and general.

    Larry’s site is dedicated* to Quintus Fabious Maximus Verrucosus, (surnamed Cunctator).

    Googling this name will probably tell you more than poor old Larry knows!

    Larry is a thinly disguised authoritarian, a SJW with a degree in Psychology.

    *In my opinion only, naming your site Fabious Maximus, is a clear indication of your intent and ideology.

  52. ==>Samuel C Cogar February 16, 2018 at 6:18 am

    Straight down the memory hole:

    Thanks for posting that little “beauty”, ….. Scott W, ….. and my best and only response to the context of your post is to quote the author of the above posted commentary of what he injected (RED-BOLDFACED TYPE) at the beginning of his “quoted” Op-ed story, …… to wit:

    “It’s difficult to describe all the ways this is stupid.” – Samuel C Cogar February 15, 2018 at 5:04 am

    Good work D*&^%head you can’t even remember what you wrote. I think F$%^#k wit is apt description of your imbecility and I’m sure you don’t wan’t to know what I really think of you! Have a nice day, if you can! ;-)

    [This is not the kind of comment that is welcome on WUWT because of the disguised profanity. You could make the same points without using any form of profanity and probably more effectively. It is approved because it has gone to the TEST thread and so not read by many people other than yourself. If you are testing how far you can push the envelope it is likely the mods will block this from going out. . . mod]

Leave a Reply - if your comment doesn't appear right away, it may have been intercepted by the SPAM filter. Please have patience while our moderation team examines it.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s