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
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 <pre> and </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:
- The URL must end with .jpg, .gif, or .png. (Maybe others.)
- The URL must be the only thing on the line.
- This means you don’t use <img>, which WordPress ignores and displays nothing.
- This means WordPress controls the image size.
- <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 |
|---|---|---|
| & | & | Ampersand |
| < | < | Less than sign Left angle bracket |
| • | • | Bullet |
| ° | ° | Degree (Use with C and F, but not K (kelvins)) |
| ⁰ ¹ ² ³ ⁴ |
⁰ ¹ ² ³ ⁴ |
Superscripts (use 8304, 185, 178-179, 8308-8313 for superscript digits 0-9) |
| ₀ ₁ ₂ ₃ |
₀ ₁ ₂ ₃ |
Subscripts (use 8320-8329 for subscript digits 0-9) |
| £ | £ | British pound |
| ñ | ñ | For La Niña & El Niño |
| µ | µ | Mu, micro |
| ± | ± | Plus or minus |
| × | × | Times |
| ÷ | ÷ | Divide |
| ≠ | ≠ | Not equals |
| | Like a space, with no special processing (i.e. word wrapping or multiple space discarding) | |
| > | > | 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
(Stefan-Boltzmann’s law)
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.

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.
can do this though ….
just see the list at this page and right click on emoji icon
and “copy image address” from droplist, and paste in post !
https://codex.wordpress.org/Using_Smilies
Hurrah !

https://wattsupwiththat.com/test/
I’m giving up on this
But the above code works at JSFIDDLE Code testing shop
see for yourself – http://jsfiddle.net/804j6fmd/
Why no work here – it’s nuts !
WordPress has made this overcomplicated
LOVE that JSFIDDLE Code testing shop !!! – thank you
Yeah, just turned into a link, not even an image. Checking to see if .JPG is okay:
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.
test of pre tags
with:
without
1234 45 567
4567 54 897
I have been looking for a way to create a table.
How did you do it?
He used the <pre> command, it’s described in the main article. Pre is for preformatted text and displays in monospace and with all the spaces preserved.
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:
Here’s an image that I think has never been displayed by WP, with a suffix that in the past would prevent WP from displaying an image:
http://wermenh.com/images/winter0708/P3020227_snowbank7.jpg?foo=bar
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.
Is there something wrong with latex support on the test page?
Error in the third line can’t use \\ in the latex code.
a mistake in this line maybe?
The first two lines

Will they show?
test strong
test bold
Yep, they’re the same.
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.
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:
;-)
The old ways are the best ways! :-)
This text has been underlined
Ah, some buglets appear to be invariant over years.
Alex October 1, 2017 at 5:54 am said:
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.
I called you a dumb-ass but clearly you can’t even comprehend a direct insult!
It’s a quote from one of the worlds greatest pieces of literature.
We agree then, you win! ;-)
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).
[IMG]http://i68.tinypic.com/23ibixc.gif[/IMG]
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:
test
Test post
test link
See CIA World Fact Book
James Corbett traces the history of bigoil showing an intimate relation between bigoil and the green movement by looking at the wealthy players behind the scene.
James Corbett traces the history of bigoil showing an intimate relation between bigoil and the green movement by looking at the wealthy players behind the scene.
James Corbett traces the history of bigoil showing an intimate relation between bigoil and the green movement by looking at the wealthy players behind the scene.
https://www.agric.wa.gov.au/sites/gateway/files/styles/original/public/lupinS_oldest_leaf.jpg?itok=Ihi8IXpE
href=https://wattsupwiththat.files.wordpress.com/2017/07/modsvsobs.png?w=652&zoom=2.png
https://i2.wp.com/australiafirstparty.net/wp-content/uploads/2015/02/Sit-Down-Money.jpg?resize=226%2C233
markl October 15, 2017 at 3:35 pm
“Just for the money” doesn’t explain why the UN/IPCC started the whole AGW scare
markl October 15, 2017 at 3:35 pm
“Just for the money” doesn’t explain why the UN/IPCC started the whole AGW scare
markl October 15, 2017 at 3:35 pm
“Just for the money” doesn’t explain why the UN/IPCC started the whole AGW scare
markl October 15, 2017 at 3:35 pm
“Just for the money” doesn’t explain why the UN/IPCC started the whole AGW scare
markl October 15, 2017 at 3:35 pm
“Just for the money” doesn’t explain why the UN/IPCC started the whole AGW scare
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:
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:
Hope this helps to visualise the issues.
cheers,
Scott
*BIPM International Vocabulary of Metrology
**I’ve adapted my graphic from the Wikipedia commons image.
Kip==> Thank you again for taking the time to respond. You say:
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
Kip==> Thank you again for taking the time to respond. You say:
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
Nick Stokes ==> Said: October 16, 2017 at 10:11 pm
Nick Stokes==> October 18, 2017 at 12:58 am:
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):
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!
There you go – UAH adjusted too!

Now I know i’ve got to get a life! ;-)
Mark S Johnson October 19, 2017 Starting at 6:52 pm, said innumerable times:
Here you go dick* :
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.
My comment keeps dissappearing……
Okay, you crappy WordPress mess, why won’t my comment post???????????
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.
Does blogspot let me display one of their images?
Bumper Sticker:
C l i m a t e C h a n g e
I s 9 7 % B u l l s h i t
Bumper Sticker:
C l i m a t e C h a n g e
I s 9 7 % B u l l s h i t
Mosher
Talk about ugly arrogance:
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
One day, two rogues,
One day, two rogues, calling themselves weavers,
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.
Talk about ugly arrogance:
Talk about ugly arrogance:
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*:
“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!
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.
Talk about ugly arrogance:
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.
Time passed merrily in the large town 12345which was his capital; strangers arrived every day at the court.
weavers
rogues
One day,
One day, two rogues
One day, two rogues, calling themselves
One day, two rogues, calling themselves weavers
One day, two rogues, calling themselves weavers, made an appearance.
One day, two rogues, calling themselves weavers, appeared.
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!
Talk about ugly arrogance:
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*:
To rephrase the Great Mosher:
* BA’s In both English Literature and Philosophy; apparently!
https://kuvat.kaakonviestinta.fi/A4gfc9ST-EKbhNS2wNqOPENVKX0%3D/855×556/smart/fe/cb/fecb06ffa8f4d6ce1f65c4d3ce875660
[Good use of the Test thread. Thank you. .mod]
Bumper Sticker
Bumper Sticker:
Bumper Sticker:
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
Let us try a picture
https://scontent-mia3-2.xx.fbcdn.net/v/t1.0-9/22519610_1777837932229248_186747388317172923_n.jpg?oh=44f8e6a3de697036bf17fddb89193ba1&oe=5A6AED3F
Test test

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]
http://allenage.com/wp-content/uploads/2015/05/tears-of-joy.png?15b286
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]
[Thank you for testing here. .mod]
Test image

[Thank you for testing here. .mod]
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! ;-)
– Nick Stokes
Sure enough Nick but why should we assume that such a border would necessarily be smooth, flat, level or linear! ;-)
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!
/Users/antonrush/Desktop/New Scientist 24:11:83.pdf
will this show as an image?
obviously not
–> Ray in SC December 5, 2017 at 3:37 pm said:
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. ;-)
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]
the mean kinetic energy
per molecule is given by
per degree of freedom, where
is Boltzmann’s constant
http://www.google.ca/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&ved=0ahUKEwjh3daE-oTYAhUnzoMKHS44CucQjRwIBw&url=http%3A%2F%2Fwww.owen.org%2Fblog%2F5129&psig=AOvVaw1hgZJgQ0Tz_cqHuEcFZtcB&ust=1513184593140037
$ latex 10^7$
$ latex \frac{100}{20} = 5 $
I’m at loss, why that works.
$ latex {10}^{-7}$ Finally right way to get an exponent?
$ latex {1010}_{2} = {10}$
$ latex {10}^{7}$
$ latex {10}^{4}$
$ latex {10}^{-7} $ Space added before ending dollar sign
$ latex {10}^{7} $
$ latex {10}^{4} $ 10⁴ 10⁷
Am I daft or why I didn’t get this already. Does it depend on newlines?
$ latex {10}^{7}$
One last try, then I’ll go and take a beer.
$ latex \frac{100}{20} = {5} $
Camille Parmesan (climate poster-girl)
any connection with Camille Paglia (feminist)
Actually, no. As Coombes and Laue demonstrated, a uniform temperature is entirely consistent with an exponential pressure reduction
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.
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
molecules of mass
and another consisting of
molecules of mass
, all randomly traveling in one dimension for the sake of simplicity subject to a gravitational field and among them having total (kinetic + potential) energy
, what you find after a long period of “thermalization” is that at altitude
the first constituent’s average molecular kinetic energy is
, 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
and absolute zero for the different constituents, where
is Boltzmann’s constant. You will also find that both constituents have the same average temperature,
, 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.
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")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")
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")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")Now we’ll try the “code” tag:
g <- 9.8 # Gravitational acceleration, m/sec^2k.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")
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.
[IMG]http://i68.tinypic.com/9091f6.jpg[/IMG]
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.
You’d also see that, although the altitude range increase with the number of molecules, the average altitude does not:
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.
Climate sensitivity is inversely related to the feedback factor
:

Helo world.
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.
The error for a gauged/vented sensor is just +/- 1 cm.
I wondered why pressure/depth sensors aren’t being used, as wave motion cancels at the scale found at typical tidal stations.
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.
strikeWarming 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
coal mine for one dollar.