The emails are incriminating enough, but the inner workings of the computer models should be enough to sink the whole ship.
Last July I posted the following blog entry at my old blog, Judicious Asininity:
Jim Miller let me know that the source code of NASA computer models used in global warming models was available. I took a peek at the code. Oh my God!!!
I started programmining in 1969. My first language was Fortran. It was a truly dreadful programming language. I still recall my worst error using it. I passed the constant 2 into a subroutine that changed the value to 3. Thereafter, any reference to 2 was treated as 3. Needless to say, a computer program that thinks 2 is 3 is not going to be much use.
The Fortran programming language has gone through many revisions, but it is still a truly dreadful programming language. Modern programming languages, such as Java and C#, work with objects that represent real world entities. Fortran doesn’t have objects. It doesn’t have structure. The snippets of code I looked at seemed to me to be nothing more than sequences of crude hacks. This snippet is typical:subroutine check_ghy_conservation( flag ),10 ccc debugging program: cam be put at the beginning and at the end ccc of the 'surface' to check water conservation use constant, only : rhow use geom, only : imaxj use model_com, only : im,jm,fearth use DOMAIN_DECOMP, only : GRID, GET use fluxes, only : prec,evapor,runoe use ghycom, only : ngm,wbare,wvege,htbare,htvege,snowbv,dz_ij use veg_com, only : afb implicit none integer flag real*8 total_water(im,jm), error_water real*8, save :: old_total_water(im,jm) ! real*8 total_energy(im,jm), error_energy ! real*8, save :: old_total_energy(im,jm) integer i,j,n real*8 fb,fv ccc enrgy check not implemented yet ... C**** define local grid integer J_0, J_1 C**** C**** Extract useful local domain parameters from "grid" C**** CALL GET(grid, J_STRT=J_0, J_STOP=J_1) do j=J_0,J_1 do i=1,imaxj(j) if ( fearth(i,j) <= 0.d0 ) cycle ccc just checking ... do n = 1,ngm if ( dz_ij(i,j,n) .le. 0.d0 ) & call stop_model('incompatible dz',255) enddo fb = afb(i,j) fv = 1.d0 - fb total_water(i,j) = fb*sum( wbare(1:ngm,i,j) ) & + fv*sum( wvege(0:ngm,i,j) ) & + fb*snowbv(1,i,j) + fv*snowbv(2,i,j) end do end do ! call stop_model('just testing...',255) if ( flag == 0 ) then old_total_water(:,:) = total_water(:,:) return endif do j=J_0,J_1 do i=1,imaxj(j) !print *,'fearth = ', i, j, fearth(i,j) if ( fearth(i,j) <= 0.d0 ) cycle fb = afb(i,j) fv = 1.d0 - fb error_water = ( total_water(i,j) - old_total_water(i,j) )*rhow & - prec(i,j) + evapor(i,j,4) + runoe(i,j) !print *, 'err H2O: ', i, j, error_water ! if ( abs( error_water ) > 1.d-9 ) print *, 'error' if ( abs( error_water ) > 1.d-9 ) call stop_model( ! was -15 & 'check_ghy_conservation: water conservation problem',255) end do end do end subroutine check_ghy_conservation
This is not sophisticated code. It is extracting some preset values, doing some crude calculations, and checking for nonsensical results. It is also full of debugging code that is disabled. That is not a sign of good code.
Fortran is still used because generations of engineers, actuaries and economists and other assorted software amateurs used it. In their minds, switching to more modern software technologies is always less economic than staying in the 1950s.
But, the fact the software technology is primitive should be the least of our concerns. The economy is incredibly complex, but much less complex than weather or climate. Needless to say, the economic computer models didn’t predict our current economic difficulties. Common sense may well have been a better guide; we should all know that economic bubbles always burst.
The fact is that computer modelling of an open system like the economy or the climate is useful for exploring scenarios but useless in predicting what’s actually going to happen. Yet, the opinion makers and AGW advocates have been treating useless computer forecasts as fact. Our President can be counted among those sheep.
I thought the NASA code was poor. The programming at the Climate Research Unit must have plumbed new depths in software quality. The Devil’s Kitchen pointed me to a key hacked document, a text file called HARRY_READ_ME.txt. It records the trials and tribulations of a programmer called Harry as he tries to make sense of the Fortran code behind the CRU climate model. Here’s a typical entry:
I find that they are broadly similar, except the normals lines (which both start with ‘6190’) are very different. I was expecting that maybe the latter contained 94-00 normals, what I wasn’t expecting was that thet are in % x10 not %! Unbelievable – even here the conventions have not been followed. It’s botch after botch after botch. Modified the conversion program to process either kind of normals line. Decided to go with the ‘spc.94-00.0312221624.dtb’ database, as it hopefully has some of the 94-00 normals in. I just wish I knew more.
Devil’s Kitchen has many more such examples. How much confidence can one have in anything Harry & Co. were able to produce from the software disaster they inherited? Yet, the CRU computer models are taken seriously by the IPCC and idiot politicians, including McCain and Obama, and they want to destroy our economy because they believe what the models claim. They’d be better off reading the entrails of sacrificed geese.
The hacked files are devastating. They do as much damage as the Acorn tapes. But I’m wondering whether the release is the work of a hacker or a whistle-blower?