Climate Model Release

// Most climate models are written in Fortran, 
// but I have developed a more accurate one in C++
// Note that method fundingDriesUp() is virtual
// and can be overridden by an educated Congress

class ClimateScam
{
public:
    static const bool WISHFUL_THINKING = false;

    ClimateScam()
    {
        m_global_warming_scam = true;
        m_global_cooling_scam = false;
    }

    ~ClimateScam()
    {
        switchBackToGlobalCoolingScam();
    }
    
    void model();
    virtual void dataTamper() = 0;
    virtual void getCaughtDataTampering() = 0;
    virtual void makeBSPublicRelationsStatement() = 0;
    bool noWarmingFor18years() { return true; }
    virtual bool fundingDriesUp() { return WISHFUL_THINKING; }

    void switchBackToGlobalCoolingScam()
    {
        m_global_warming_scam = false;
        m_global_cooling_scam = true;
    }

private:
    bool m_global_cooling_scam;
    bool m_global_warming_scam;
};

void ClimateScam::model()
{
    while(m_global_warming_scam)
    {
        dataTamper();
        sleep( rand(10000) );
        getCaughtDataTampering();
        sleep( rand(10000) );
        makeBSPublicRelationsStatement();
        std::cout << "Goddard may have been right about this"
                  << "one but was wrong about everything else" 
                  << std::endl;
        sleep( rand(10000) );
   
        if ( rand(10000) == 0 
             && noWarmingFor18years() 
             && fundingDriesUp() )
        {
            // Destructor automatically switches back to global 
            // cooling scam;
            delete this;
        }
    }
}

int main()
{
    ClimateScam* global_warming_scam = new ClimateScam();
    global_warming_scam.model();
}

About stevengoddard

Just having fun
This entry was posted in Uncategorized. Bookmark the permalink.

28 Responses to Climate Model Release

  1. _Jim says:

    Do I compile with the BULLSHIT flag on or off?

    e.g.

    #define BULLSHIT True

  2. geran says:

    The rand number sub is hilarious.

    Only in “climate science”.

    (Mosh will probably copy.)

  3. Truthseeker says:

    Willis Eschenbach demands that everyone doing science releases their code. Send this to him to show that you are doing science …

  4. gregole says:

    Excellent!!

  5. tom0mason says:

    Steve
    I note that in this updated code, the variable ‘ClimateNormal’ is never used.
    Is that correct?

  6. Fred from Canuckistan says:

    Fortran.

    Why?
    Watfor?

    • mjc says:

      Because it is basically the computer equivalent of ancient Sanskrit…something no sane person can possibly EVER comprehend…therefore it makes checking the code and debugging pointless.

      • What could possibly go wrong? says:

        Actually Fortran is used because it is very well optimized and parallelizable on the computing farms used in large scale modelling.

        That doesn’t make the results of the models any better, because the assumptions are already wrong, but yeah, it would be the right tool for the job.

  7. bill.anna@verizon.net says:

    I am not a C+++ weenie but I think you need some define statements before this will compile.
    And you left out Global_Temp_Actual = BTSOOM.

  8. Anto says:

    This needs a Harry_Readme.txt

  9. Mischievous Monkey says:

    You should really put a break after your delete this or you may get unexpected results (something may overwrite the contents of m_global_warming_scam before the loop condition is re-evaluated).

    • In practice, you need to define a new scam.

      • Mischievous Monkey says:

        I think you have left lots of scope for your current model to be enhanced, simply adding functions such as missingHeatInTheOceans() and hideTheDecline() should easily keep it going till the next round of funding with mininmal changes. 🙂

  10. squid2112 says:

    Cute … don’t care much for the coding format (we now call it “common core coding”) .. but cute.

    I think a more applicable language would be common LISP or Clojure.

    • squid2112 says:

      Additionally, I think dataTamper() should be static since you have shown data tampering to be a constant and hence not a virtual method (one that can be overridden by inherited classes). Until you can actually break this model, I don’t see any inheritance overriding dataTamper(). Once the model is broken, then dataTamper() would be moot and shouldn’t be called again.

  11. Ben says:

    Will the destructor ever be called? In the model above, funding never dries up 😦

    virtual bool fundingDriesUp() { return WISHFUL_THINKING; }

    if ( rand(10000) == 0
    && noWarmingFor18years()
    && fundingDriesUp() ) // <<<<<<<
    {
    // Destructor automatically switches back to global
    // cooling scam;
    delete this;
    }

  12. rabbit says:

    The destructor should also be made virtual. Otherwise you could have a memory leak.

Leave a Reply

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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s