; celestial.6k.csm.web.ncl ; program to correct data to celestial calendar ; weights from Bob Gallimore ; weights are different for diffrent models (this example is CSM) begin ; open file to write corrected variables to out = addfile("csm.6k.celestial.nc","c") ; open data file to get data from data = addfile("/grove3/iesuw/csm/csm.6k.mone00100049.nc", "r") ; variables you want to write out solin = new((/12,48,96/),float) ts = new((/12,48,96/),float) oro = new((/12,48,96/),float) precl = new((/12,48,96/),float) precc = new((/12,48,96/),float) oro(:,:,:) = data->ORO(:,:,:) ;create new months for each variable solin(0,:,:) = 0.071*data->SOLIN(11,:,:) + 0.974*data->SOLIN(0,:,:) - 0.044*data->SOLIN(1,:,:) solin(1,:,:) = 0.053*data->SOLIN(0,:,:) + 0.963*data->SOLIN(1,:,:) - 0.015*data->SOLIN(2,:,:) solin(2,:,:) = 0.017*data->SOLIN(1,:,:) + 0.983*data->SOLIN(2,:,:) solin(3,:,:) = 0.984*data->SOLIN(3,:,:) + 0.016*data->SOLIN(4,:,:) solin(4,:,:) = - 0.016*data->SOLIN(3,:,:) + 0.999*data->SOLIN(4,:,:) + 0.017*data->SOLIN(5,:,:) solin(5,:,:) = - 0.016*data->SOLIN(4,:,:) + 1.016*data->SOLIN(5,:,:) solin(6,:,:) = 1.016*data->SOLIN(6,:,:) - 0.016*data->SOLIN(7,:,:) solin(7,:,:) = 0.018*data->SOLIN(6,:,:) + 1.030*data->SOLIN(7,:,:) - 0.047*data->SOLIN(8,:,:) solin(8,:,:) = 0.056*data->SOLIN(7,:,:) + 1.003*data->SOLIN(8,:,:) - 0.059*data->SOLIN(9,:,:) solin(9,:,:) = 0.077*data->SOLIN(8,:,:) + 0.995*data->SOLIN(9,:,:) - 0.071*data->SOLIN(10,:,:) solin(10,:,:) = 0.096*data->SOLIN(9,:,:) + 0.973*data->SOLIN(10,:,:) - 0.068*data->SOLIN(11,:,:) solin(11,:,:) = 0.092*data->SOLIN(10,:,:) + 0.962*data->SOLIN(11,:,:) - 0.054*data->SOLIN(0,:,:) ts(0,:,:) = 0.071*data->TS(11,:,:) + 0.974*data->TS(0,:,:) - 0.044*data->TS(1,:,:) ts(1,:,:) = 0.053*data->TS(0,:,:) + 0.963*data->TS(1,:,:) - 0.015*data->TS(2,:,:) ts(2,:,:) = 0.017*data->TS(1,:,:) + 0.983*data->TS(2,:,:) ts(3,:,:) = 0.984*data->TS(3,:,:) + 0.016*data->TS(4,:,:) ts(4,:,:) = - 0.016*data->TS(3,:,:) + 0.999*data->TS(4,:,:) + 0.017*data->TS(5,:,:) ts(5,:,:) = - 0.016*data->TS(4,:,:) + 1.016*data->TS(5,:,:) ts(6,:,:) = 1.016*data->TS(6,:,:) - 0.016*data->TS(7,:,:) ts(7,:,:) = 0.018*data->TS(6,:,:) + 1.030*data->TS(7,:,:) - 0.047*data->TS(8,:,:) ts(8,:,:) = 0.056*data->TS(7,:,:) + 1.003*data->TS(8,:,:) - 0.059*data->TS(9,:,:) ts(9,:,:) = 0.077*data->TS(8,:,:) + 0.995*data->TS(9,:,:) - 0.071*data->TS(10,:,:) ts(10,:,:) = 0.096*data->TS(9,:,:) + 0.973*data->TS(10,:,:) - 0.068*data->TS(11,:,:) ts(11,:,:) = 0.092*data->TS(10,:,:) + 0.962*data->TS(11,:,:) - 0.054*data->TS(0,:,:) precc(0,:,:) = 0.071*data->PRECC(11,:,:) + 0.974*data->PRECC(0,:,:) - 0.044*data->PRECC(1,:,:) precc(1,:,:) = 0.053*data->PRECC(0,:,:) + 0.963*data->PRECC(1,:,:) - 0.015*data->PRECC(2,:,:) precc(2,:,:) = 0.017*data->PRECC(1,:,:) + 0.983*data->PRECC(2,:,:) precc(3,:,:) = 0.984*data->PRECC(3,:,:) + 0.016*data->PRECC(4,:,:) precc(4,:,:) = - 0.016*data->PRECC(3,:,:) + 0.999*data->PRECC(4,:,:) + 0.017*data->PRECC(5,:,:) precc(5,:,:) = - 0.016*data->PRECC(4,:,:) + 1.016*data->PRECC(5,:,:) precc(6,:,:) = 1.016*data->PRECC(6,:,:) - 0.016*data->PRECC(7,:,:) precc(7,:,:) = 0.018*data->PRECC(6,:,:) + 1.030*data->PRECC(7,:,:) - 0.047*data->PRECC(8,:,:) precc(8,:,:) = 0.056*data->PRECC(7,:,:) + 1.003*data->PRECC(8,:,:) - 0.059*data->PRECC(9,:,:) precc(9,:,:) = 0.077*data->PRECC(8,:,:) + 0.995*data->PRECC(9,:,:) - 0.071*data->PRECC(10,:,:) precc(10,:,:) = 0.096*data->PRECC(9,:,:) + 0.973*data->PRECC(10,:,:) - 0.068*data->PRECC(11,:,:) precc(11,:,:) = 0.092*data->PRECC(10,:,:) + 0.962*data->PRECC(11,:,:) - 0.054*data->PRECC(0,:,:) precl(0,:,:) = 0.071*data->PRECL(11,:,:) + 0.974*data->PRECL(0,:,:) - 0.044*data->PRECL(1,:,:) precl(1,:,:) = 0.053*data->PRECL(0,:,:) + 0.963*data->PRECL(1,:,:) - 0.015*data->PRECL(2,:,:) precl(2,:,:) = 0.017*data->PRECL(1,:,:) + 0.983*data->PRECL(2,:,:) precl(3,:,:) = 0.984*data->PRECL(3,:,:) + 0.016*data->PRECL(4,:,:) precl(4,:,:) = - 0.016*data->PRECL(3,:,:) + 0.999*data->PRECL(4,:,:) + 0.017*data->PRECL(5,:,:) precl(5,:,:) = - 0.016*data->PRECL(4,:,:) + 1.016*data->PRECL(5,:,:) precl(6,:,:) = 1.016*data->PRECL(6,:,:) - 0.016*data->PRECL(7,:,:) precl(7,:,:) = 0.018*data->PRECL(6,:,:) + 1.030*data->PRECL(7,:,:) - 0.047*data->PRECL(8,:,:) precl(8,:,:) = 0.056*data->PRECL(7,:,:) + 1.003*data->PRECL(8,:,:) - 0.059*data->PRECL(9,:,:) precl(9,:,:) = 0.077*data->PRECL(8,:,:) + 0.995*data->PRECL(9,:,:) - 0.071*data->PRECL(10,:,:) precl(10,:,:) = 0.096*data->PRECL(9,:,:) + 0.973*data->PRECL(10,:,:) - 0.068*data->PRECL(11,:,:) precl(11,:,:) = 0.092*data->PRECL(10,:,:) + 0.962*data->PRECL(11,:,:) - 0.054*data->PRECL(0,:,:) ; assign coordinate variables to data so GrADS can read it precc!0 = "time" precc&time = data->time precc!1 = "lat" precc&lat = data->lat precc!2 = "lon" precc&lon = data->lon solin!0 = "time" solin&time = data->time solin!1 = "lat" solin&lat = data->lat solin!2 = "lon" solin&lon = data->lon ts!0 = "time" ts&time = data->time ts!1 = "lat" ts&lat = data->lat ts!2 = "lon" ts&lon = data->lon precl!0 = "time" precl&time = data->time precl!1 = "lat" precl&lat = data->lat precl!2 = "lon" precl&lon = data->lon oro!0 = "time" oro&time = data->time oro!1 = "lat" oro&lat = data->lat oro!2 = "lon" oro&lon = data->lon ; write out data to file out->ts = ts out->solin = solin out->precl = precl out->oro = oro out->precc = precc ; write out coordinate variables (metadata) to file out->lat = data->lat out->lon = data->lon out->time = data->time end