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

174 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. Alex October 1, 2017 at 5:54 am said:

    You are referring to some fable as fact and covering it under ‘comparative mythology’. As a matter of fact, I have studied mythology at some point in my life.

    There is an old saying that: “Myths are other people’s religion”

    Many people don’t get this parable, so I will explicate it for you. Hinduism is a myth to Christians and Christianity is mythology to Hindus.

    By the way, I didn’t refer to anyone as a ‘christian dumb-ass’. If you choose to introduce yourself as that then it’s not my affair.

    I called you a dumb-ass but clearly you can’t even comprehend a direct insult!

    ‘darken this forum’ – what the hell are you on about?

    It’s a quote from one of the worlds greatest pieces of literature.

    I can probably handle the ‘brainless stupidity’ part, after all, I am responding to your comment.

    We agree then, you win! ;-)

  5. Sadly, this article misses the point. The purpose of the suit is not to remedy the sort of harm that the Martin Act was drafted to combat.

    I’m going to self plagiarize from a series of comments I wrote along time ago on a relevant article posted by Reason Magazine (which, incidentally so utterly failed to cover the whole issue adequately that I now consider Ron Bailey a completely unreliable journalist).

    Teh(sic) big difference is that the AG’s and their supporters violated the Anti-Ku Klux Clan act. Essentially, they sought to deprive people of their civil rights my abusing their positions.

    1) Exxon is accused of not disclosing the true risks climate change posed to their business model to shareholders. There is no evidence of this. The evidence claiming to show this was so blatantly manufactured that I was reminded of the Protocols of the Elders of Zion when I reviewed it.

    2) Exxon’s disclosures and internal communications on the subject of climate change are both internally and externally congruent. More tellingly, their educated guesses as to the equilibrium climate change sensitivity to doubling of CO2 are actually not to far off from what observations are converging on.

    3) The AG’s were working off a playbook created by the self-proclaimed Climate Accountability Institute. They knew they had no evidence of fraud. They hoped a fishing expedition would find it:

    And finally, the group sought to identify the most promising and mutually reinforcing intellectual, legal, and/or public strategies for moving forward. We are pleased to share the outcome of these preliminary workshop discussions. Among the many points captured in this report, we want to highlight the following:

    • A key breakthrough in the public and legal case for tobacco control came when internal documents came to light showing the tobacco industry had knowingly misled the public. Similar documents may well exist in the vaults of the fossil fuel industry and their trade associations and front groups, and there are many possible approaches to unearthing them.

    While we currently lack a compelling public narrative about climate change in the United States, we may be close to coalescing around one. Furthermore, climate change may loom larger today in the public mind than tobacco did when public health advocates began winning policy victories.

    See Shub Niggurath’s thorough expose.

    4) The guys assisting the AG’s were hoping to make money off a legal settlement extorted from Exxon.

    Maibach has told allies that he hopes a RICO case against oil companies will prove a financial boon to groups like his Center for Climate Change Communication.

    “If there was a settlement between the government and the fossil fuel industry” stemming from a RICO investigation, “there is no question in my mind that a good portion of that money should be spent on a national campaign to educate people on the risks of climate change, and build their resolve to work towards solutions,” Maibach told the website Grist last year.

    Maibach already receives significant grant money for just those sorts of campaigns. One recent grant from the Robert Wood Johnson Foundation funded his research on methods for “persuading the public and policy-makers to take action” on climate change.

    Congress has a proper role in uncovering civil rights violations committed by the executive branch or by states. And what Al Gore and his cultists who have embedded themselves in the Democratic Party and the civil services of the states and the federal government are trying to do to Exxon is to extort money by threatening them with a criminal investigation that has no penitentiary basis. It is no different than if a democrat like Boss Hog were to tell a newspaper to stop carrying editorials opposing Jim Crow and make a donation to the policemen’s benevolence association fund or face a code inspection that would close down their offices and condemn the building where their printing presses are sited.

    One thing I forgot. The AG’s conspiracy blatantly violates a bunch of state laws, and because of the interstate nature of the conspiracy, falls very firmly in the ambit of the federal government

  6. Sometimes Mr Stokes will take the time to write reams of nick picking that is actually argument less but it looks clever. I’m still have no idea of the relevance of his dispute about the graphs above. What follow is a an example of a Nick Stokes argument in three graphs, two of which he posted:

  7. markl October 15, 2017 at 3:35 pm
    “Just for the money” doesn’t explain why the UN/IPCC started the whole AGW scare

    “Isn’t the only hope for the planet that the industrialized civilizations collapse?
    Isn’t it our responsibility to bring that about?”
                  Maurice Strong, founder of the UN Environment Programme (UNEP)

  8. markl October 15, 2017 at 3:35 pm
    “Just for the money” doesn’t explain why the UN/IPCC started the whole AGW scare

    “Isn’t the only hope for the planet that the industrialized civilizations collapse? Isn’t it our responsibility to bring that about?”
                  Maurice Strong, founder of the UN Environment Programme (UNEP)

  9. markl October 15, 2017 at 3:35 pm
    “Just for the money” doesn’t explain why the UN/IPCC started the whole AGW scare

    “Isn’t the only hope for the planet that the industrialized civilizations collapse?
    Isn’t it our responsibility to bring that about?”
                                                                                                      Maurice Strong

  10.    markl October 15, 2017 at 3:35 pm
    “Just for the money” doesn’t explain why the UN/IPCC started the whole AGW scare

    “Isn’t the only hope for the planet that the industrialized
    civilizations collapse? Isn’t it our responsibility to bring
    that about?”
                                  Maurice Strong

  11.    markl October 15, 2017 at 3:35 pm
    “Just for the money” doesn’t explain why the UN/IPCC started the whole AGW scare

    “Isn’t the only hope for the planet that the industrialized
    civilizations collapse? Isn’t it our responsibility to bring
    that about?”
                                                                Maurice Strong

  12. Firstly, thank you Kip Hansen for a great post and for taking the time to respond to so many comments in this long thread.

    I totally agree with Kip and appreciate his very well written and simple explication of his aspect of metrology.

    I’ve come to this post late and have read all the comments above but only wanted to interject, if I wasn’t repeating what had been said already.

    Kip describes an obvious truth to me, that is a well know, well documented and well understood issue for practitioners in the real world.

    I’m a visual person and the commonly used image of a target to symbolise the – accuracy/precision – issue, is the first thing I thought of. But when doing this mental exercise, one can easily see that there is a need for a third term! I drew pictures of each “target” with the aim of making a cartoon example that would make it very clear to a layman.

    I was sure that anybody who had given this more than a moments thought wouldn’t have come up with the same result, so I did just a little research:

    According to ISO 5725-1and VIM**, Accuracy consists of Trueness (proximity of measurement results to the true value) and Precision (repeatability or reproducibility of the measurement) – Wikipedia

    Hope this helps to visualise the issues.

    cheers,

    Scott

    *BIPM International Vocabulary of Metrology
    **I’ve adapted my graphic from the Wikipedia commons image.

    • Firstly, thank you Kip Hansen for a great post and for taking the time to respond to so many comments in this long thread.

      I totally agree with Kip and appreciate his very well written and simple explication of his aspect of metrology.

      I’ve come to this post late and have read all the comments above but only wanted to interject, if I wasn’t repeating what had been said already.

      Kip describes an obvious truth to me, that is a well know, well documented and well understood issue for practitioners in the real world.

      I’m a visual person and the commonly used image of a target to symbolise the – accuracy/precision – issue, is the first thing I thought of. But when doing this mental exercise, one can easily see that there is a need for a third term! I drew pictures of each “target” with the aim of making a cartoon example that would make it very clear to a layman. I was sure that anybody who had given this more than a moments thought would also have come up with the same result, so I did just a little research:

      According to ISO 5725-1 and VIM*, the general term ”accuracy”, is used to describe the closeness of a measurement to the true value. When the term is applied to sets of measurements of the same measurand, it involves a component of random error and a component of systematic error. In this case trueness is the closeness of the mean of a set of measurement results to the actual (true) value and precision is the closeness of agreement among a set of results.

      According to ISO 5725-1and VIM**, Accuracy consists of Trueness (proximity of measurement results to the true value) and Precision (repeatability or reproducibility of the measurement) – Wikipedia

      Hope this helps to visualise the issues.

      cheers,

      Scott

      *BIPM International Vocabulary of Metrology
      **I’ve adapted my graphic from the Wikipedia commons image.

  13. Kip==> Thank you again for taking the time to respond. You say:

    The “measurand” is “A quantity intended to be measured. An object being measured.”
    The only time “accuracy” applies to a the mean of a set of measurements is when they are of the same measured.

    Sure, I do agree with you but wanted to tease out the very first principles.

    If you aim at one target and take one shot – one measurement of one measurand – you can only talk about
    the result in terms of trueness (the proximity of the measurement result to the true value) or how close the bullet
    hole is to the centre of the target. You can not yet talk about accuracy because that requires a knowledge of precision.
    Precision is the repeatability of the measurement, it equates to a cluster of shots – or “the closeness of agreement among a set of results”.

    I simply meant, that more than one shot is required either of the same target or single shots on multiple targets before you can determine precision.
    Once you have a “measure” of precision and trueness you can begin to talk about accuracy.

    The reason precision is a necessary condition for accuracy is because it is impossible to separate random error – or a random truth in this case – from systematic error.
    A gun bolted to a test bench hitting the bullseye in one shot can not speak to accuracy because precision hasn’t been tested. The next several shots hitting all over the target or all shots going through the hole in the bullseye will illuminate the situation however!

    If there are two sides to the argument in the thread above, I think it is because people are talking at cross purposes. One side is arguing precision and the other trueness and they are confusing either term with accuracy.

    To restate, the trueness of your tide gauge example, equates to the target’s bullseye – the instantaneous water level outside the stilling well. While the the 181 (1 millimetre resolution) “cluster”, provides precision the +/-2cm calibrated range of the apparatus added to recorded value represents its realaccuracy and true range.

    And I agree, averaging large numbers of these values will only produce a spurious accuracy because, although a quasi-precision might be gained, trueness is lowered and thus accuracy lost!

    cheers,

    Scott

  14. Kip==> Thank you again for taking the time to respond. You say:

    The “measurand” is “A quantity intended to be measured. An object being measured.” The only time “accuracy” applies to a the mean of a set of measurements is when they are of the same measured.

    Sure, I do agree with you but wanted to tease out the very first principles.

    If you aim at one target and take one shot – one measurement of one measurand – you can only talk about the result in terms of trueness (the proximity of the measurement result to the true value) or how close the bullet
    hole is to the centre of the target. You can not yet talk about accuracy because that requires a knowledge of precision. Precision is the repeatability of the measurement, it equates to a cluster of shots – or “the closeness of agreement among a set of results”.

    I simply meant, that more than one shot is required either of the same target or single shots on multiple targets before you can determine precision. Once you have a “measure” of precision and trueness you can begin to talk about accuracy.

    The reason precision is a necessary condition for accuracy is because it is impossible to separate random error – or a random truth in this case – from systematic error. A gun bolted to a test bench hitting the bullseye in one shot can not speak to accuracy because precision hasn’t been tested. The next several shots hitting all over the target or all shots going through the hole in the bullseye will illuminate the situation however!

    If there are two sides to the argument in the thread above, I think it is because people are talking at cross purposes. One side is arguing precision and the other trueness and they are confusing either term with accuracy.

    To restate, the trueness of your tide gauge example, equates to the target’s bullseye – the instantaneous water level outside the stilling well. While the the 181 (1 millimetre resolution) “cluster”, provides precision the +/-2cm calibrated range of the apparatus added to recorded value represents its realaccuracy and true range.

    And I agree, averaging large numbers of these values will only produce a spurious accuracy because, although a quasi-precision might be gained, trueness is lowered and thus accuracy lost!

    cheers,

    Scott

  15. Nick Stokes ==> Said: October 16, 2017 at 10:11 pm

    But there is one big difference between accuracy and precision, which is in the BIPM vocabulary of metrology, much cited here, but apparently not read. It says, Sec 2.13 (their bold): “NOTE 1 The concept ‘measurement accuracy’ is not a quantity and is not given a numerical quantity value. “

    And the rest of the note? The very next sentence….. is!

    A measurement is said to be more accurate when it offers a smaller measurement error*.

    This is exactly what Kip Hansen has argued all along and exactly what Bartleby just wrote** and yet you have just gone out of your way to cherry pick the quote and completely butcher the context of the very definition you are referring to!

    *And measurement error is defined at 2.16 (3.10) thusly: “measured quantity value minus a reference quantity value”
    **Bartleby wrote: “100 measures using a device accurate +/- 2cm will result in a more precise estimate that’s accurate to +/- 2c

  16. Nick Stokes==> October 18, 2017 at 12:58 am:

    The section I quoted was complete in itself, and set in bold the relevant fact: “is not given a numerical quantity value“. Nothing that follows changes that very explicit statement. And it’s relevant to what Bartleby wrote: “a more precise estimate that’s accurate to +/- 2cm”. BIPM says that you can’t use a figure for accuracy in that way.

    Talk about perversity – I can’t imagine it would be anything else – if you really are being intellectually honest!

    Here is the whole reference (Their bold):

    2.13 (3.5)
    measurement accuracy
    accuracy of measurement
    accuracy

    closeness of agreement between a measured quantity value and a true quantity value of a measurand

    NOTE 1 The concept ‘measurement accuracy’ is not a quantity and is not given a numerical quantity value. A measurement is said to be more accurate when it offers a smaller measurement error.

    NOTE 2 The term “measurement accuracy” should not be used for measurement trueness and the term “measurement precision” should not be used for ‘measurement accuracy’, which, however, is related to both these concepts.

    NOTE 3 ‘Measurement accuracy’ is sometimes understood as closeness of agreement between measured quantity values that are being attributed to the measured.

    How could you completely miss the definition of Accuracy?

    It is defined as the “closeness of agreement between a measured quantity value and a true quantity value of a measurand.”

    It is very clear that the term is not numeric but ordinal and of course, ordinal quantities have mathematical meaning as you would well know!

  17. Mark S Johnson October 19, 2017 Starting at 6:52 pm, said innumerable times:

    Link and/or citation please……
    Got a citation for that statement?
    Again AndyG55 fails to provide a citation and/or link
    Everybody here bashes Mann, yet nobody can provide definitive proof that shows his work to not be accurate.
    Now, can you please provide us with the scientific study that shows his work to be wrong.
    Now, please provide me with a link to a SCIENTIFIC paper, published in a reputable journal that shows Mann’s work to be incorrect.
    Please drednicolson, can you give us scientific evidence that Mann’s work is in error?
    Please provide me a link to a scientific study proving Mann is wrong.
    Now, do you, or do you not have a link to a scientific study that shows Mann’s work incorrect?
    This site is hilarious. Everyone commenting here treats Mann as the bogeyman, and nobody offers any scientific evidence that any of his work is incorrect.

    Here you go dick* :

    McIntyre, Stephen; McKitrick, Ross (2003). “Corrections to the Mann et al. (1998) Proxy Data Base and Northern Hemispheric Average Temperature Series”. Energy & Environment. 14 (6): 751–771. doi:10.1260/095830503322793632.

    McIntyre, Stephen; McKitrick, Ross (2005). “The M&M Critique of the MBH98 Northern Hemisphere Climate Index: Update and Implications”. Energy & Environment. 16 (1): 69–100. doi:10.1260/0958305053516226.

    McIntyre, Stephen; McKitrick, Ross (February 2005). “Hockey Sticks, principal components, and spurious significance” (PDF). Geophysical Research Letters. 32 (3): L03710. Bibcode:2005GeoRL..3203710M. doi:10.1029/2004GL021750.

    McIntyre, Stephen; McKitrick, Ross (2009). “Proxy inconsistency and other problems in millennial paleoclimate reconstructions”. PNAS. 106 (6): E10. Bibcode:2009PNAS..106…10M. PMC 2647809 . PMID 19188613. doi:10.1073/pnas.0812509106

    http://journals.sagepub.com/doi/10.1260/095830503322793632

    http://journals.sagepub.com/doi/10.1260/0958305053516226

    https://web.archive.org/web/20070412094238/http://www.climateaudit.org/pdf/mcintyre.grl.2005.pdf

    http://www.pnas.org/content/106/6/E10.full

    *johnson/dick
    noun
    mann’s penis.

    • I don’t see them in the spam folder, where were you posting? If WP said something about not being able to post, that often means your WP login has expired and your comment is lost. OTOH, that you can post here says that the spam bin is probably where they wound up.

  18. Talk about ugly arrogance:

    No scientist believes in AGW because of the consensus.
    We believe because of the physics and the data.

    Consensus is merely a metric of how many scientists understand the physics.

    And so the great Mosher* spews out the ultimate example of argument from authority – illustrated perfectly in literature he clearly didn’t read in his studies*:

  19. “These must, indeed, be splendid clothes!” thought the Emperor. “Had I such a suit, I might at once find out what men in my realms are unfit for their office, and also be able to distinguish the wise from the foolish! This stuff must be woven for me immediately.” And he caused large sums of money to be given to both the weavers in order that they might begin their work directly.

    To rephrase the Great Mosher:

    Consensus is merely a metric of how many scientists know which side their bread is buttered on, despite the physics.

    * BA’s In both English Literature and Philosophy; apparently!

  20. They said that they knew how to weave stuffs of the most beautiful colors and elaborate patterns, the clothes manufactured from which should have the wonderful property of remaining invisible to everyone who was unfit for the office he held, or who was extraordinarily simple in character.

  21. Talk about ugly arrogance:

    No scientist believes in AGW because of the consensus.
    We believe because of the physics and the data.

    Consensus is merely a metric of how many scientists understand the physics.

    And so the great Mosher* spews out the ultimate example of argument from authority – illustrated perfectly in literature he clearly didn’t read in his studies*:

    Time passed merrily in the large town which was his capital; strangers arrived every day at the court. One day, two rogues, calling themselves weavers, made their appearance. They said that they knew how to weave stuffs of the most beautiful colors and elaborate patterns, the clothes manufactured from which should have the wonderful property of remaining invisible to everyone who was unfit for the office he held, or who was extraordinarily simple in character.

  22. One day, two rogues, calling themselves weavers, appeared. They said that they knew how to weave stuffs of the most beautiful colors and elaborate patterns, the clothes manufactured from which should have the wonderful property of remaining invisible to everyone who was unfit for the office he held, or who was extraordinarily simple in character.

    “These must, indeed, be splendid clothes!” thought the Emperor. “Had I such a suit, I might at once find out what men in my realms are unfit for their office, and also be able to distinguish the wise from the foolish! This stuff must be woven for me immediately.” And he caused large sums of money to be given to both the weavers in order that they might begin their work directly.

    To rephrase the Great Mosher:

    Consensus is merely a metric of how many scientists know which side their bread is buttered on, despite the physics.

    * BA’s In both English Literature and Philosophy; apparently!

  23. Talk about ugly arrogance:

    No scientist believes in AGW because of the consensus.
    We believe because of the physics and the data. Consensus is merely a metric of how many scientists understand the physics.

    And so the great Mosher* spews out the ultimate example of argument from authority – illustrated perfectly in literature he clearly didn’t read in his studies*:

    Time passed merrily in the large town which was his capital; strangers arrived every day at the court. One day, two rogues, calling themselves weavers, appeared. They said that they knew how to weave stuffs of the most beautiful colors and elaborate patterns, the clothes manufactured from which should have the wonderful property of remaining invisible to everyone who was unfit for the office he held, or who was extraordinarily simple in character.

    “These must, indeed, be splendid clothes!” thought the Emperor. “Had I such a suit, I might at once find out what men in my realms are unfit for their office, and also be able to distinguish the wise from the foolish! This stuff must be woven for me immediately.” And he caused large sums of money to be given to both the weavers in order that they might begin their work directly.

    To rephrase the Great Mosher:

    Consensus is merely a metric of how many scientists know which side their bread is buttered on, despite the physics.

    * BA’s In both English Literature and Philosophy; apparently!

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

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

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

  27. 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! ;-)

  28. 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! ;-)

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

  30. –> 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. ;-)

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

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

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

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

  35. 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")
    
  36. 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")

  37. 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")
    
  38. 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")
    
  39. 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")

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

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

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

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

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

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

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