Download SimEnv User Guide - Potsdam Institute for Climate Impact Research
Transcript
15.2.2 Fortran Model With respect to Example 5.1 the following Fortran code world_f.f could be used to describe the model interfaced to SimEnv. SimEnv modifications are marked in bold. program world_f c declare SimEnv interface functions (compile with –I$SE_HOME/inc) include ‘simenv_mod_f.inc’ integer*4 simenv_sts,simenv_run_int character*6 simenv_run_char c declare atmo without dimensions level and time and bios without time c because they are computed in place and simenv_slice_f is used real*4 atmo(0:44,0:89) real*4 bios(0:35,0:89) integer*4 atmo_g(0:19) integer*4 bios_g p1 p2 p3 p4 c c c c c = = = = 1. 2. 3. 4. simenv_sts = simenv_ini_f() check return code for the model interface functions at least here if(simenv_sts.ne.0) stop 1 simenv_get_run_f only if necessary: simenv_sts = simenv_get_run_f(simenv_run_int,simenv_run_char) simenv_sts = simenv_get_f(‘p1’,p1,p1) simenv_sts = simenv_get_f(‘p2’,p2,p2) simenv_sts = simenv_get_f(‘p3’,p3,p3) simenv_sts = simenv_get_f(‘p4’,p4,p4) compute dynamics of atmo and bios over space and time, of atmo_g over time, all dependent on p1,p2,p3,p4 do idecade = 0,19 ... do level= 0,3 simenv_sts = simenv_slice_f(‘atmo’,3,level+1,level+1) simenv_sts = simenv_slice_f(‘atmo’,4,idecade+1,idecade+1) simenv_sts = simenv_put_f(‘atmo’,atmo) enddo simenv_sts = simenv_slice_f(‘bios’,3,idecade+1,idecade+1) simenv_sts = simenv_put_f(‘bios’,bios) enddo ... simenv_sts = simenv_put_f(‘atmo_g’,atmo_g) compute dynamics of bios_g ... simenv_sts = simenv_put_f(‘bios_g’,bios_g) simenv_sts = simenv_end_f() end Example file: world_f.f Example 15.1 -196- Model interface for Fortran models – model world_f.f Multi-Run Simulation Environment SimEnv User Guide for Version 3.01 (July 10, 2012)