c_ --------------------------------------------------------------------- c_ RCS lines preceded by "c_ " c_ --------------------------------------------------------------------- c_ c_ $Source: /www/html/ipsl/OCMIP/phase2/simulations/Biotic/distrib/RCS/write_nc_Biotic_equil.f,v $ c_ $Revision: 2.5 $ c_ $Date: 1999/10/19 10:14:56 $ ; $State: Exp $ c_ $Author: jomce $ ; $Locker: $ c_ c_ --------------------------------------------------------------------- c_ $Log: write_nc_Biotic_equil.f,v $ c_ Revision 2.5 1999/10/19 10:14:56 jomce c_ Split RCS filename and revision identifier over 2 lines c_ to avoid going beyond 72 characters. c_ c_ Revision 2.4 1999/10/19 10:00:58 jomce c_ Added string to identify RCS filename and revision c_ Deleted numerous associate attributes c_ c_ Revision 2.3 1999/08/30 15:51:54 orr c_ Added missing definition for variable DIC c_ c_ Revision 2.2 1999/04/29 12:39:24 orr c_ Changed name of routine ("_monthly" -> "_equil"); c_ Changed output file name to group//'_Biotic_equil.nc' c_ c_ Revision 2.1 1999/04/29 10:16:50 orr c_ Now GDT 1.2 compatible!! c_ c_ --------------------------------------------------------------------- c_ C*********************************************************************** C C NAME: WRITE_NC_Biotic_equil C C INPUT: C group= group code (ex: IPSL) C production= production (model and version ex: OPA 8.1) C imt= dimension C jmt= dimension C kmt= dimension C nb_seconds_per_year= following your model year [s] C nb_timesteps_per_year= following your model timestep C C PO4= monthly mean tracer concentrations of PO4 [mol/m^3] C DOP= monthly mean tracer concentrations of DOP [mol/m^3] C O2= monthly mean tracer concentrations of O2 [mol/m^3] C DIC= monthly mean tracer concentrations of DIC [mol/m^3] C Alk= monthly mean tracer concentrations of Total Alkalinity [mol/m^3] C pCO2surf= monthly mean pCO2surf = CO2surf/alphaC [uatm] C dpCO2= monthly mean dpCO2 = (CO2surf - CO2sat*P/Po) [uatm] C FgDIC= monthly mean air-sea CO2 flux [mol/m^2/s] C FgO2= monthly mean air-sea O2 flux [mol/m^2/s] C FvDIC= monthly mean virtual DIC flux [mol/m^2/s] C FvAlk= monthly mean virtual flux of Total Alkalinity [eq/m^2/s] C PnewPOP= monthly mean downward flux of particulate organic phosphorus C interpolated to the compensation depth (75 m) [mol/m^2/s] C PnewDOP= monthly mean downward flux of dissolved organic phosphorus C interpolated to the compensation depth (75 m) [mol/m^2/s] C PnewDOPa= monthly mean advective net downward flux of dissolved organic phosphorus (DOP) C interpolated to the compensation depth (75 m) [mol/m^2/s] C PnewDOPd= monthly mean diffusive net downward flux of dissolved organic phosphorus (DOP) C interpolated to the compensation depth (75 m) [mol/m^2/s] C PnewDOPc= monthly mean convective net downward flux of dissolved organic phosphorus (DOP) C interpolated to the compensation depth (75 m) [mol/m^2/s] C C OUTPUT FILE: C A netcdf file (clobbed if exists) with C the filename group_Biotic_equil.nc C C*********************************************************************** SUBROUTINE WRITE_NC_Biotic_equil( & group,production, & imt,jmt,kmt, & nb_seconds_per_year,nb_timesteps_per_year, & PO4, DOP, O2, DIC, Alk, & pCO2surf, dpCO2, & FgDIC, FgO2, & FvDIC, FvAlk, & PnewPOP, PnewDOP, & PnewDOPa, PnewDOPd, PnewDOPc) C No implicit declarations IMPLICIT NONE C Arguments CHARACTER*(*) group CHARACTER*(*) production INTEGER*4 imt,jmt,kmt INTEGER*4 nb_seconds_per_year INTEGER*4 nb_timesteps_per_year REAL*4 time(12) REAL*4 PO4(imt,jmt,kmt,12) REAL*4 DOP(imt,jmt,kmt,12) REAL*4 O2(imt,jmt,kmt,12) REAL*4 DIC(imt,jmt,kmt,12) REAL*4 Alk(imt,jmt,kmt,12) REAL*4 pCO2surf(imt,jmt,12) REAL*4 dpCO2(imt,jmt,12) REAL*4 FgDIC(imt,jmt,12) REAL*4 FgO2(imt,jmt,12) REAL*4 FvDIC(imt,jmt,12) REAL*4 FvAlk(imt,jmt,12) REAL*4 PnewPOP(imt,jmt,12) REAL*4 PnewDOP(imt,jmt,12) REAL*4 PnewDOPa(imt,jmt,12) REAL*4 PnewDOPd(imt,jmt,12) REAL*4 PnewDOPc(imt,jmt,12) C Constants REAL*4 missing_value PARAMETER (missing_value=-1.E+34) C Local variables CHARACTER*256 string256,filename INTEGER*4 I C Function INTEGER*4 LEN_TRIM C NetCDF variables INCLUDE 'netcdf.inc' INTEGER*4 NC_ID INTEGER*4 STATUS INTEGER*4 LON_DIM INTEGER*4 LAT_DIM INTEGER*4 DEPTH_DIM INTEGER*4 TIME_DIM,TIME_ID INTEGER*4 PO4_ID,DOP_ID,O2_ID,DIC_ID,Alk_ID INTEGER*4 pCO2surf_ID,dpCO2_ID INTEGER*4 FgDIC_ID,FgO2_ID INTEGER*4 FvDIC_ID,FvAlk_ID INTEGER*4 PnewPOP_ID,PnewDOP_ID INTEGER*4 PnewDOPa_ID,PnewDOPd_ID,PnewDOPc_ID INTEGER*4 DIMS_3D(3) INTEGER*4 DIMS_4D(4) C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C Build the NetCDF filename C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ filename=group//'_Biotic_equil.nc' C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C Open the NetCDF file C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ STATUS=NF_CREATE(filename,NF_CLOBBER,NC_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C Define dimensions C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ STATUS=NF_DEF_DIM(NC_ID,'x',imt,LON_DIM) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_DEF_DIM(NC_ID,'y',jmt,LAT_DIM) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_DEF_DIM(NC_ID,'depth',kmt,DEPTH_DIM) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_DEF_DIM(NC_ID,'time',12,TIME_DIM) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C Define variables C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ STATUS=NF_DEF_VAR(NC_ID,'time',NF_FLOAT, & 1,TIME_DIM,TIME_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- DIMS_4D(1)=LON_DIM DIMS_4D(2)=LAT_DIM DIMS_4D(3)=DEPTH_DIM DIMS_4D(4)=TIME_DIM STATUS=NF_DEF_VAR(NC_ID,'PO4',NF_FLOAT, & 4,DIMS_4D,PO4_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'DOP',NF_FLOAT, & 4,DIMS_4D,DOP_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'O2',NF_FLOAT, & 4,DIMS_4D,O2_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'Alk',NF_FLOAT, & 4,DIMS_4D,Alk_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'DIC',NF_FLOAT, & 4,DIMS_4D,DIC_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- DIMS_3D(1)=LON_DIM DIMS_3D(2)=LAT_DIM DIMS_3D(3)=TIME_DIM STATUS=NF_DEF_VAR(NC_ID,'pCO2surf',NF_FLOAT, & 3,DIMS_3D,pCO2surf_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'dpCO2',NF_FLOAT, & 3,DIMS_3D,dpCO2_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'FgDIC',NF_FLOAT, & 3,DIMS_3D,FgDIC_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'FgO2',NF_FLOAT, & 3,DIMS_3D,FgO2_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'FvDIC',NF_FLOAT, & 3,DIMS_3D,FvDIC_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'FvAlk',NF_FLOAT, & 3,DIMS_3D,FvAlk_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'PnewPOP',NF_FLOAT, & 3,DIMS_3D,PnewPOP_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'PnewDOP',NF_FLOAT, & 3,DIMS_3D,PnewDOP_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'PnewDOPa',NF_FLOAT, & 3,DIMS_3D,PnewDOPa_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'PnewDOPd',NF_FLOAT, & 3,DIMS_3D,PnewDOPd_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_DEF_VAR(NC_ID,'PnewDOPc',NF_FLOAT, & 3,DIMS_3D,PnewDOPc_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C Define global attributes C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ string256='$RCSfile: write_nc_Biotic_equil.f,v $' & //'$Revision: 2.5 $' STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL, & 'output_routine',LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='GDT 1.2' STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'Conventions', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256=filename STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'file_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256=group//'_grid.nc' STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'associate_file', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='OCMIP' STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'project', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256=group STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'institution', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256=production STATUS=NF_PUT_ATT_TEXT(NC_ID,NF_GLOBAL,'production', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C Define variable attributes C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ string256='seasonal phase' STATUS=NF_PUT_ATT_TEXT(NC_ID,TIME_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='calendar_month as %m.%f' STATUS=NF_PUT_ATT_TEXT(NC_ID,TIME_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,TIME_ID,'modulo', & NF_FLOAT,1,12.0) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='circular' STATUS=NF_PUT_ATT_TEXT(NC_ID,TIME_ID,'topology', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_INT(NC_ID,TIME_ID,'nb_seconds_per_year', & NF_INT,1,nb_seconds_per_year) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_INT(NC_ID,TIME_ID,'nb_timesteps_per_year', & NF_INT,1,nb_timesteps_per_year) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Concentration of PO4' STATUS=NF_PUT_ATT_TEXT(NC_ID,PO4_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/m^3' STATUS=NF_PUT_ATT_TEXT(NC_ID,PO4_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,PO4_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Concentration of DOP' STATUS=NF_PUT_ATT_TEXT(NC_ID,DOP_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/m^3' STATUS=NF_PUT_ATT_TEXT(NC_ID,DOP_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,DOP_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Concentration of O2' STATUS=NF_PUT_ATT_TEXT(NC_ID,O2_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/m^3' STATUS=NF_PUT_ATT_TEXT(NC_ID,O2_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,O2_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Concentration of DIC' STATUS=NF_PUT_ATT_TEXT(NC_ID,DIC_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/m^3' STATUS=NF_PUT_ATT_TEXT(NC_ID,DIC_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,DIC_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Concentration of Total Alkalinity' STATUS=NF_PUT_ATT_TEXT(NC_ID,Alk_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='eq/m^3' STATUS=NF_PUT_ATT_TEXT(NC_ID,Alk_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,Alk_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Surface ocean pCO2' STATUS=NF_PUT_ATT_TEXT(NC_ID,pCO2surf_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='uatm' STATUS=NF_PUT_ATT_TEXT(NC_ID,pCO2surf_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,pCO2surf_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Delta pCO2' STATUS=NF_PUT_ATT_TEXT(NC_ID,dpCO2_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='uatm' STATUS=NF_PUT_ATT_TEXT(NC_ID,dpCO2_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,dpCO2_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Mean Gas Flux of CO2' STATUS=NF_PUT_ATT_TEXT(NC_ID,FgDIC_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/(m^2*s)' STATUS=NF_PUT_ATT_TEXT(NC_ID,FgDIC_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,FgDIC_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Mean Gas Flux of O2' STATUS=NF_PUT_ATT_TEXT(NC_ID,FgO2_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/(m^2*s)' STATUS=NF_PUT_ATT_TEXT(NC_ID,FgO2_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,FgO2_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Mean Virtual Flux of CO2' STATUS=NF_PUT_ATT_TEXT(NC_ID,FvDIC_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/(m^2*s)' STATUS=NF_PUT_ATT_TEXT(NC_ID,FvDIC_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,FvDIC_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Mean Virtual Flux of Total Alkalinity' STATUS=NF_PUT_ATT_TEXT(NC_ID,FvAlk_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/(m^2*s)' STATUS=NF_PUT_ATT_TEXT(NC_ID,FvAlk_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,FvAlk_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Mean Downward Flux of POP ' & //'at 75 m' STATUS=NF_PUT_ATT_TEXT(NC_ID,PnewPOP_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/(m^2*s)' STATUS=NF_PUT_ATT_TEXT(NC_ID,PnewPOP_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,PnewPOP_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Mean Downward Flux of DOP ' & //'at 75 m' STATUS=NF_PUT_ATT_TEXT(NC_ID,PnewDOP_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/(m^2*s)' STATUS=NF_PUT_ATT_TEXT(NC_ID,PnewDOP_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,PnewDOP_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Mean Downward Advective Flux of DOP ' & //'at 75 m' STATUS=NF_PUT_ATT_TEXT(NC_ID,PnewDOPa_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/(m^2*s)' STATUS=NF_PUT_ATT_TEXT(NC_ID,PnewDOPa_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,PnewDOPa_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Mean Downward Diffusive Flux of DOP ' & //'at 75 m' STATUS=NF_PUT_ATT_TEXT(NC_ID,PnewDOPd_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/(m^2*s)' STATUS=NF_PUT_ATT_TEXT(NC_ID,PnewDOPd_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,PnewDOPd_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- string256='Mean Downward Convective Flux of DOP ' & //'at 75 m' STATUS=NF_PUT_ATT_TEXT(NC_ID,PnewDOPc_ID,'long_name', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) string256='mol/(m^2*s)' STATUS=NF_PUT_ATT_TEXT(NC_ID,PnewDOPc_ID,'units', & LEN_TRIM(string256),string256) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) STATUS=NF_PUT_ATT_REAL(NC_ID,PnewDOPc_ID,'missing_value', & NF_FLOAT,1,missing_value) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C End of define mode C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ STATUS=NF_ENDDEF(NC_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C Write data to file C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DO I=1,12 time(I)=I - 0.5 ENDDO STATUS=NF_PUT_VAR_REAL(NC_ID,TIME_ID,time) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,PO4_ID,PO4) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,DOP_ID,DOP) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,O2_ID,O2) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,DIC_ID,DIC) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,Alk_ID,Alk) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,pCO2surf_ID,pCO2surf) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,dpCO2_ID,dpCO2) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,FgDIC_ID,FgDIC) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,FgO2_ID,FgO2) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,FvDIC_ID,FvDIC) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,FvAlk_ID,FvAlk) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,PnewPOP_ID,PnewPOP) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,PnewDOP_ID,PnewDOP) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,PnewDOPa_ID,PnewDOPa) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,PnewDOPd_ID,PnewDOPd) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C--------------------------------------------------------- STATUS=NF_PUT_VAR_REAL(NC_ID,PnewDOPc_ID,PnewDOPc) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C Close the NetCDF file C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ STATUS=NF_CLOSE(NC_ID) IF (STATUS.NE.NF_NOERR) CALL HANDLE_ERRORS(STATUS) END