source: LMDZ6/branches/IPSL-CM6A-MR/libf/phydev/phyetat0.F90 @ 5441

Last change on this file since 5441 was 2395, checked in by Ehouarn Millour, 9 years ago

Bug fix for aquaplanets: "rlat" and "rlon" were uninitialized when written to startphy.nc; phyredem should write "longitude_deg" and "latitude_deg" to the file. Overall "rlat" and "rlon" should not be used and "latitude_deg" and "longitude_deg" should be used instead in the physics. To be further cleaned up.
Some cleanup on that mater also made in phydev.
Note that this change will make bench test results different for longitudes and latitudes, because of roundoff effects.
EM

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 2.2 KB
Line 
1!
2! $Id $
3!
4SUBROUTINE phyetat0(fichnom)
5! Load initial state for the physics
6! and do some resulting initializations
7
8  USE dimphy, only: klon
9  USE iostart, ONLY : open_startphy,get_field,close_startphy
10  USE iophy, ONLY : init_iophy_new
11  USE geometry_mod, ONLY : longitude_deg, latitude_deg
12
13  IMPLICIT NONE
14
15  CHARACTER(len=*),INTENT(in) :: fichnom ! input file name
16
17  REAL :: lon_startphy(klon), lat_startphy(klon)
18  INTEGER :: i
19
20  ! open physics initial state file:
21  CALL open_startphy(fichnom)
22
23  ! read latitudes and make a sanity check (because already known from dyn)
24  CALL get_field("latitude",lat_startphy)
25  DO i=1,klon
26    IF (ABS(lat_startphy(i)-latitude_deg(i))>=1) THEN
27      WRITE(*,*) "phyetat0: Error! Latitude discrepancy wrt startphy file:",&
28                 " i=",i," lat_startphy(i)=",lat_startphy(i),&
29                 " latitude_deg(i)=",latitude_deg(i)
30      ! This is presumably serious enough to abort run
31      CALL abort_physic("phyetat0","discrepancy in latitudes!",1)
32    ENDIF
33    IF (ABS(lat_startphy(i)-latitude_deg(i))>=0.0001) THEN
34      WRITE(*,*) "phyetat0: Warning! Latitude discrepancy wrt startphy file:",&
35                 " i=",i," lat_startphy(i)=",lat_startphy(i),&
36                 " latitude_deg(i)=",latitude_deg(i)
37    ENDIF
38  ENDDO
39
40  ! read longitudes and make a sanity check (because already known from dyn)
41  CALL get_field("longitude",lon_startphy)
42  DO i=1,klon
43    IF (ABS(lon_startphy(i)-longitude_deg(i))>=1) THEN
44      WRITE(*,*) "phyetat0: Error! Longitude discrepancy wrt startphy file:",&
45                 " i=",i," lon_startphy(i)=",lon_startphy(i),&
46                 " longitude_deg(i)=",longitude_deg(i)
47      ! This is presumably serious enough to abort run
48      CALL abort_physic("phyetat0","discrepancy in longitudes!",1)
49    ENDIF
50    IF (ABS(lon_startphy(i)-longitude_deg(i))>=0.0001) THEN
51      WRITE(*,*) "phyetat0: Warning! Longitude discrepancy wrt startphy file:",&
52                 " i=",i," lon_startphy(i)=",lon_startphy(i),&
53                 " longitude_deg(i)=",longitude_deg(i)
54    ENDIF
55  ENDDO
56
57  ! read in other variables here ...
58
59  ! close file
60  CALL close_startphy
61
62  ! do some more initializations
63  CALL init_iophy_new(latitude_deg,longitude_deg)
64
65END SUBROUTINE phyetat0
Note: See TracBrowser for help on using the repository browser.