Changeset 1007


Ignore:
Timestamp:
01/17/20 13:01:35 (4 years ago)
Author:
dubos
Message:

devel : introduced plugin-based physics (TBC)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/physics/physics.f90

    r913 r1007  
    99  INTEGER, PARAMETER :: phys_none=0, phys_column=1, & 
    1010       phys_HS94=3, phys_LB2012=4, & 
    11        phys_DCMIP=11, phys_DCMIP2016=12, & 
     11       phys_DCMIP=11, phys_DCMIP2016=12, phys_plugin=13, & 
    1212       phys_lmdz_generic=21, phys_external=22 
    1313  INTEGER :: phys_type 
     
    2121!$OMP THREADPRIVATE(physics_type) 
    2222 
    23   PUBLIC :: physics, init_physics, zero_du_phys 
     23  INTERFACE 
     24     SUBROUTINE plugin_init_physics 
     25     END SUBROUTINE plugin_init_physics 
     26 
     27     SUBROUTINE plugin_physics 
     28     END SUBROUTINE plugin_physics 
     29  END INTERFACE 
     30 
     31  PROCEDURE(plugin_init_physics), POINTER :: init_physics_plugin => NULL() 
     32  PROCEDURE(plugin_physics), POINTER      :: physics_plugin => NULL() 
     33 
     34  PUBLIC :: physics, init_physics, init_physics_plugin, physics_plugin, zero_du_phys 
    2435 
    2536CONTAINS 
     
    7889          phys_type = phys_LB2012 
    7990          CALL init_phys_venus        
     91       CASE ('plugin') 
     92          IF(.NOT.ASSOCIATED(init_physics_plugin)) THEN 
     93             PRINT *, 'FATAL : physics = plugin selected by init_physics_plugin not set by driver program. Aborting.' 
     94             STOP 
     95          END IF 
     96          phys_type = phys_plugin 
     97          CALL init_physics_plugin 
    8098       CASE DEFAULT 
    8199          IF(is_mpi_root) PRINT*, 'init_physics : Bad selector for variable physics <',& 
    82100               TRIM(physics_type), '> options are <none>, <held_suarez>, <Lebonnois2012>,', & 
    83                '<dcmip>, <dcmip2016>, <phys_lmdz_generic>, <phys_external>' 
     101               '<dcmip>, <dcmip2016>, <plugin>, <phys_lmdz_generic>, <phys_external>' 
    84102          STOP 
    85103       END SELECT 
     
    247265    CASE(phys_LB2012) 
    248266       IF (is_omp_level_master) CALL full_physics_venus 
     267    CASE(phys_plugin) 
     268       IF (is_omp_level_master) CALL physics_plugin 
    249269    CASE DEFAULT 
    250270       IF(is_master) PRINT *,'Internal error : illegal value of phys_type', phys_type 
Note: See TracChangeset for help on using the changeset viewer.