Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1
  • 2

TOPIC: Continued computation error with LIMWAC

Continued computation error with LIMWAC 10 years 8 months ago #12410

  • cyamin
  • cyamin's Avatar
  • OFFLINE
  • openTELEMAC Guru
  • Posts: 997
  • Thank you received: 234
Hello,

I am setting up a coupled Tomawac-Telemac2D-Sisyphe model that features continued computations for all of the models. I have modified the sub-routines METEO, VENUTI and LIMWAC in order to read wind and boundary wave conditions from formatted .txt files.

I have setup the first Tomawac computation to export a Global results file that I can use to continue the next computation, but still want LIMWAC to read thereafter for the rest of the computation. However, I get this error:
                     *************************************
                     *    END OF MEMORY ORGANIZATION:    *
                     *************************************

 INBIEF (BIEF): NOT A VECTOR MACHINE (ACCORDING TO YOUR DATA)
 STRCHE (BIEF): NO MODIFICATION OF FRICTION

 NUMBER OF LIQUID BOUNDARIES:           1

 CORFON (TELEMAC2D): NO MODIFICATION OF BOTTOM

 TITLE OF PREVIOUS COMPUTATION:

 NAME: VELOCITY U        UNIT: M/S
 NAME: VELOCITY V        UNIT: M/S
 NAME: WATER DEPTH       UNIT: M
 NAME: FREE SURFACE      UNIT: M
 NAME: BOTTOM            UNIT: M
 NAME: SCALAR FLOWRATE   UNIT: M2/S
 NAME: FLOWRATE ALONG X  UNIT: M2/S
 NAME: FLOWRATE ALONG Y  UNIT: M2/S
 NAME: SCALAR VELOCITY   UNIT: M/S
 NAME: WIND ALONG X      UNIT: M/S
 NAME: WIND ALONG Y      UNIT: M/S
 NAME: COURANT NUMBER    UNIT:

 SUITE_SERAFIN : READ OF RECORD   157

 TIME OF RECORD:     7760.000     S

 VARIABLE : SCALAR FLOWRATE M2/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : FLOWRATE ALONG XM2/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : FLOWRATE ALONG YM2/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : SCALAR VELOCITY M/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : WIND ALONG X    M/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : WIND ALONG Y    M/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : COURANT NUMBER
 IS IN THE FILE BUT WILL NOT BE READ
                    WIND AT T=   7760.00 DIRN= 157.5SPEED= 4.950

================================================================================
 ITERATION        0    TIME:  2 H  9 MIN  20.0000 S   (     7760.0000 S)
 PRERES: MAXIMUM COURANT NUMBER:    0.6487153
 TELEMAC2D COUPLED WITH: TOMAWAC, SISYPHE
 TELEMAC-2D: INTERNAL COUPLING WITH TOMAWAC
 INBIEF (BIEF): NOT A VECTOR MACHINE (ACCORDING TO YOUR DATA)
 STRCHE (BIEF): NO MODIFICATION OF FRICTION

 **** FOLLOWING COMPUTATION ****

 TITLE OF THE PREVIOUS COMPUTATION :Kamares Waves
 - COMPUTATIONAL RESUMPTION AT TIME    1.0000000000000000

================================================================================
       TEMPS :       1.0000 SECONDES                            0IEME  ITERATION
--------------------------------------------------------------------------------

 LIMWAC
 ERROR IN THE WAVE FILE

 PLANTE: PROGRAM STOPPED AFTER AN ERROR

job aborted:
[ranks] message

[0-1] terminated

[2] process exited without calling finalize

[3] terminated

Is there a problem having Tomawac continue from a global results file and still use LIMWAC to read boundary spectrum?

Here is my fortran file:

File Attachment:

File Name: h7194e28.txt
File Size: 17 KB

And here is my Tomawac cas file:

File Attachment:

File Name: h16c8fa9.txt
File Size: 4 KB


Any help would be appreciated.
Costas
The administrator has disabled public write access.

Continued computation error with LIMWAC 10 years 8 months ago #12414

  • jmhervouet
  • jmhervouet's Avatar
Hello,

Your implementation in LIMWAC is not in the library so it is difficult to say if it should work or not. As it consists of finding the right time step in a file, it looks like it is not a problem of parallelism (unless different numbers of values are read). Maybe printing a message before the guilty read statement would help see what happens and would show if at least a few records are read.

Regards,

JMH
The administrator has disabled public write access.

Continued computation error with LIMWAC 10 years 8 months ago #12418

  • cyamin
  • cyamin's Avatar
  • OFFLINE
  • openTELEMAC Guru
  • Posts: 997
  • Thank you received: 234
Hello JMH,

I noticed that I had forgot to specify the previous computation file for sisyphe. Since then I come across this problem:
 LISTING OF TELEMAC-2D ------------------------------------------------------------------------------

                 TTTTT  EEEEE  L      EEEEE  M   M  AAAAA  CCCCC
                   T    E      L      E      MM MM  A   A  C
                   T    EEE    L      EEE    M M M  AAAAA  C
                   T    E      L      E      M   M  A   A  C
                   T    EEEEE  LLLLL  EEEEE  M   M  A   A  CCCCC

                         2D    VERSION 6.3    FORTRAN 90
                               WITH SEVERAL TRACERS
                         COUPLED WITH SISYPHE AND TOMAWAC

                   ********************************************
                   *               LECDON:                    *
                   *        AFTER CALLING DAMOCLES            *
                   *        CHECKING OF DATA  READ            *
                   *         IN THE STEERING FILE             *
                   ********************************************

 EXITING LECDON. NAME OF THE STUDY:

 OPENING FILES FOR TELEMAC2D

                          *****************************
                          *    MEMORY ORGANIZATION    *
                          *****************************

 READGEO1: TITLE= newSelafin
            NUMBER OF ELEMENTS:     4126
            NUMBER OF POINTS:     2151

            FORMAT NOT INDICATED IN TITLE

 MXPTEL (BIEF) : MAXIMUM NUMBER OF ELEMENTS AROUND A POI                                                            NT:   8
                 MAXIMUM NUMBER OF POINTS AROUND A POINT                                                            :   9
 SEGBOR (BIEF) : NUMBER OF BOUNDARY SEGMENTS =    174
 INCLUDING THOSE DUE TO DOMAIN DECOMPOSITION
 CORRXY (BIEF):NO MODIFICATION OF COORDINATES

 MESH: MESH   ALLOCATED

                     *************************************
                     *    END OF MEMORY ORGANIZATION:    *
                     *************************************

 LISTING OF SISYPHE WITH COUPLING------------------------------------------------------------------------------

                  SSSS I   SSSS Y   Y PPPP  H   H EEEEE
                 S     I  S      Y Y  P   P H   H E
                  SSS  I   SSS    Y   PPPP  HHHHH EEEE
                     S I      S   Y   P     H   H E
                 SSSS  I  SSSS    Y   P     H   H EEEEE

                              VERSION 6.3
                    COUPLED WITH TELEMAC-2D INTERNALLY

 WARNING !  AT LINE         2554  OF THE DICTIONARY :
 NUMBER OF DEFAULT VALUES           10  IS DIFFERENT FROM THE SIZE            2

 WARNING !  AT LINE         2637  OF THE DICTIONARY :
 NUMBER OF DEFAULT VALUES           10  IS DIFFERENT FROM THE SIZE            2

 WARNING !  AT LINE         2675  OF THE DICTIONARY :
 NUMBER OF DEFAULT VALUES           10  IS DIFFERENT FROM THE SIZE            2

 WARNING !  AT LINE         3254  OF THE DICTIONARY :
 NUMBER OF DEFAULT VALUES           13  IS DIFFERENT FROM THE SIZE            1

                   ********************************************
                   *               LECDON:                    *
                   *        AFTER CALLING DAMOCLES            *
                   *        CHECKING OF DATA  READ            *
                   *         IN THE STEERING FILE             *
                   ********************************************

 OPENING FILES FOR SISYPHE

                     *******************************
                     *     MEMORY ORGANISATION     *
                     *******************************

 READGEO1: TITLE= newSelafin
            NUMBER OF ELEMENTS:     4126
            NUMBER OF POINTS:     2151

            FORMAT NOT INDICATED IN TITLE

 MXPTEL (BIEF) : MAXIMUM NUMBER OF ELEMENTS AROUND A POI                                                            NT:   8
                 MAXIMUM NUMBER OF POINTS AROUND A POINT                                                            :   9
 SEGBOR (BIEF) : NUMBER OF BOUNDARY SEGMENTS =    174
 INCLUDING THOSE DUE TO DOMAIN DECOMPOSITION
 CORRXY (BIEF):NO MODIFICATION OF COORDINATES

 MESH: MESH_S ALLOCATED

                     *************************************
                     *    END OF MEMORY ORGANIZATION:    *
                     *************************************

----------------------------------------------------------------------------------------------------

                TTTTT  OOOOO  M   M  AAAAA  W   W  AAAAA  CCCCC
                  T    O   O  MM MM  A   A  W   W  A   A  C
                  T    O   O  M W M  AAAAA  W W W  AAAAA  C
                  T    O   O  M   M  A   A  WW WW  A   A  C
                  T    OOOOO  M   M  A   A  W   W  A   A  CCCCC

                              |    |    |
                             )_)  )_)  )_) _
                            )___))___))___)\
                            )____)____)_____)\\
                          _____|____|____|____\\\__
                 ---------\               6.3  /---------
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
                        ^^^^      ^^^^     ^^^    ^^
                            ^^^^      ^^^

                   ********************************************
                   *        SUBROUTINE LECDON_TOMAWAC         *
                   *           CALL OF DAMOCLES               *
                   *        VERIFICATION OF READ DATA         *
                   *            ON STEERING FILE              *
                   ********************************************

 OPENING FILES FOR TOMAWAC

                     *******************************
                     *     MEMORY ORGANISATION     *
                     *******************************

 READGEO1: TITLE= newSelafin
            NUMBER OF ELEMENTS:     4126
            NUMBER OF POINTS:     2151

            FORMAT NOT INDICATED IN TITLE

 MXPTEL (BIEF) : MAXIMUM NUMBER OF ELEMENTS AROUND A POI                                                            NT:   8
                 MAXIMUM NUMBER OF POINTS AROUND A POINT                                                            :   9
 SEGBOR (BIEF) : NUMBER OF BOUNDARY SEGMENTS =    174
 INCLUDING THOSE DUE TO DOMAIN DECOMPOSITION
 CORRXY (BIEF):NO MODIFICATION OF COORDINATES

 MESH: MESH   ALLOCATED

 READGEO1: TITLE= newSelafin
            NUMBER OF ELEMENTS:     4126
            NUMBER OF POINTS:     2151

            FORMAT NOT INDICATED IN TITLE

 MXPTEL (BIEF) : MAXIMUM NUMBER OF ELEMENTS AROUND A POI                                                            NT:   8
                 MAXIMUM NUMBER OF POINTS AROUND A POINT                                                            :   9
 SEGBOR (BIEF) : NUMBER OF BOUNDARY SEGMENTS =    174
 INCLUDING THOSE DUE TO DOMAIN DECOMPOSITION
 CORRXY (BIEF):NO MODIFICATION OF COORDINATES

 MESH: MESH3D ALLOCATED

                     *************************************
                     *    END OF MEMORY ORGANIZATION:    *
                     *************************************

 CALLING LECLIM
 BACK FROM LECLIM
 CALLING INBIEF
 INBIEF (BIEF): NOT A VECTOR MACHINE (ACCORDING TO YOUR DATA)
 BACK FROM INBIEF
 STRCHE (BIEF): NO MODIFICATION OF FRICTION

 CALLING FRICTION_CHOICE
 BACK FROM FRICTION_CHOICE

 NUMBER OF LIQUID BOUNDARIES:           1
 CALLING CORNOR
 BACK FROM CORNOR
 CALLING MASBAS2D
 BACK FROM MASBAS2D
 CALLING CORFON

 CORFON (TELEMAC2D): NO MODIFICATION OF BOTTOM

 BACK FROM CORFON
 CALLING CONDIN
 BACK FROM CONDIN

 TITLE OF PREVIOUS COMPUTATION:

 NAME: VELOCITY U        UNIT: M/S
 NAME: VELOCITY V        UNIT: M/S
 NAME: WATER DEPTH       UNIT: M
 NAME: FREE SURFACE      UNIT: M
 NAME: BOTTOM            UNIT: M
 NAME: SCALAR FLOWRATE   UNIT: M2/S
 NAME: FLOWRATE ALONG X  UNIT: M2/S
 NAME: FLOWRATE ALONG Y  UNIT: M2/S
 NAME: SCALAR VELOCITY   UNIT: M/S
 NAME: WIND ALONG X      UNIT: M/S
 NAME: WIND ALONG Y      UNIT: M/S
 NAME: COURANT NUMBER    UNIT:

 SUITE_SERAFIN : READ OF RECORD   157

 TIME OF RECORD:     7760.000     S

 VARIABLE : SCALAR FLOWRATE M2/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : FLOWRATE ALONG XM2/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : FLOWRATE ALONG YM2/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : SCALAR VELOCITY M/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : WIND ALONG X    M/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : WIND ALONG Y    M/S
 IS IN THE FILE BUT WILL NOT BE READ

 VARIABLE : COURANT NUMBER
 IS IN THE FILE BUT WILL NOT BE READ
 CALLING METEO
                    WIND AT T=   7760.00 DIRN= 157.5SPEED= 4.950

 BACK FROM METEO
 CALLING PROPIN
 BACK FROM PROPIN
 CALLING FRICTION_CHOICE
 BACK FROM FRICTION_CHOICE

================================================================================
 ITERATION        0    TIME:  2 H  9 MIN  20.0000 S   (     7760.0000 S)
 CALLING PRERES_TELEMAC2D
 PRERES: MAXIMUM COURANT NUMBER:    0.4246115E-01
 BACK FROM PRERES_TELEMAC2D
 CALLING DESIMP
 BACK FROM DESIMP
 CALLING HPROPA
 BACK FROM HPROPA
 CALLING DE CHPCON
 BACK FROM CHPCON
 CALLING BILAN
 BACK FROM BILAN
 TELEMAC2D COUPLED WITH: TOMAWAC, SISYPHE
 TELEMAC-2D: INTERNAL COUPLING WITH TOMAWAC
 PREMIER APPEL DE TOMAWAC
 INBIEF (BIEF): NOT A VECTOR MACHINE (ACCORDING TO YOUR DATA)
 STRCHE (BIEF): NO MODIFICATION OF FRICTION

================================================================================
       TEMPS :       0.0000 SECONDES                            0IEME  ITERATION
--------------------------------------------------------------------------------
         BOUNDARY WAVE CONDIT: HM0= 0.43, DIRN=  42.8, FPI= 0.324

--------------------------------------------------------------------------------
       CALCUL DU CHAMP CONVECTEUR ET REMONTEE DES
           CARACTERISTIQUES
 USING STREAMLINE VERSION 6.3 FOR CHARACTERISTICS
 NUMBER OF SUB-ITERATIONS :          17
 NUMBER OF SUB-ITERATIONS :          16
 NUMBER OF SUB-ITERATIONS :          16
 NUMBER OF SUB-ITERATIONS :          14
 NUMBER OF SUB-ITERATIONS :          13
 NUMBER OF SUB-ITERATIONS :          11
 NUMBER OF SUB-ITERATIONS :           9
 NUMBER OF SUB-ITERATIONS :           7
 BACK FROM TOMAWAC
 TELEMAC-2D: INTERNAL COUPLING WITH SISYPHE
 PREMIER APPEL DE SISYPHE
 INITIALIZATION
 PART 0 : INITIALISING SISYPHE
 LECLIS
 END_LECLIS
 INBIEF
 INBIEF (BIEF): NOT A VECTOR MACHINE (ACCORDING TO YOUR DATA)
 END_INBIEF

 LIQUID BOUNDARIES:           1
 FONSTR
 STRCHE (BIEF): NO MODIFICATION OF FRICTION

 END_FONSTR
 ECRGEO
 END_ECRGEO
 BIEF_SUITE

 TITLE OF PREVIOUS COMPUTATION:

 NAME: SOLID DISCH       UNIT: M2/S
 NAME: SOLID DISCH X     UNIT: M2/S
 NAME: SOLID DISCH Y     UNIT: M2/S
 NAME: EVOLUTION         UNIT: M

 SUITE_SERAFIN : READ OF RECORD   156

 TIME OF RECORD:     7750.000     S
 END_BIEF_SUITE
 RESCUE_SISYPHE
--------------------------------------------------------------------------------
 RESCUE : HYDRODYNAMIC FILE
 WATER DEPTH UNABLE TO BE COMPUTED

 PLANTE: PROGRAM STOPPED AFTER AN ERROR

job aborted:
[ranks] message

[0-3] process exited without calling finalize
Why is the water depth unable to be computed? I have specified in telemac to output water elevation and bottom level in the graphic output. Or should I include water level in Sisyphe output as well?

Regards,
Costas
The administrator has disabled public write access.

Continued computation error with LIMWAC 10 years 8 months ago #12421

  • cyamin
  • cyamin's Avatar
  • OFFLINE
  • openTELEMAC Guru
  • Posts: 997
  • Thank you received: 234
It appears that in my attempt to investigate possible causes for the error, I had disabled the "NEXT COMPUTATION" in the tomawac cas file. After enabling it, the problem persists (and most likely precedes the error that I posted before). Here is the full output of the run with DEBUGGER on:

File Attachment:

File Name: h39d5672.txt
File Size: 17 KB


Any ideas?
Costas
The administrator has disabled public write access.

Continued computation error with LIMWAC 10 years 8 months ago #12425

  • jmhervouet
  • jmhervouet's Avatar
Hello,

This problem seems a bug in rescue.f of library telemac2d, the bottom ZF is variable 6 whereas rescue tests TROUVE(5).EQ.1, if you change TROUVE(5) into TROUVE(6) it should work, if you have the bottom in your file. It is strange that nobody noticed this before.

Regards,

Jean-Michel Hervouet
The administrator has disabled public write access.

Continued computation error with LIMWAC 10 years 8 months ago #12426

  • cyamin
  • cyamin's Avatar
  • OFFLINE
  • openTELEMAC Guru
  • Posts: 997
  • Thank you received: 234
Dear JMH,

Your remark did solve the problem regarding the calculation of water depth. However, the problem regarding limwac still persists.

This is my addition to limwac.f:
        IF(SPEULI) THEN
!
!        EXEMPLE DE MODIFICATION DE FRA - A MODIFIER SUIVANT VOTRE CAS
!        EXAMPLE OF MODIFICATION OF FRA - TO BE MODIFIED DEPENDING
!        ON YOUR CASE
!
          IF(AT.EQ.0) THEN
!           JUMPING TWO LINES OF COMMENTS
            READ(WAC_FILES(WACFO1)%LU,*,ERR=100,END=200)
            READ(WAC_FILES(WACFO1)%LU,*,ERR=100,END=200)
!           READING THE FIRST TWO LINES OF DATA
            READ(WAC_FILES(WACFO1)%LU,*,ERR=100,END=200) AT1,HM1,FP1,THETA1
            READ(WAC_FILES(WACFO1)%LU,*,ERR=100,END=200) AT2,HM2,FP2,THETA2
          ENDIF
!
!-----------------------------------------------------------------------
!
10        CONTINUE
          IF(AT.GE.AT1.AND.AT.LT.AT2) THEN
            IF(AT2-AT1.GT.1.D-6) THEN
              COEF=(AT-AT1)/(AT2-AT1)
            ELSE
              COEF=0.D0
            ENDIF
            HM=HM1+COEF*(HM2-HM1)
            FP=FP1+COEF*(FP2-FP1)
            THETA=THETA1+COEF*(THETA2-THETA1)
!
            LTT=(LT/LISPRD)*LISPRD
            IF(LT.EQ.LTT) THEN            
              IF(LNG.EQ.1) WRITE(LU,11), 'VAGUE CONDIT AUX LIMIT:',
     &        ' HM0=',HM,', DIRN=',THETA,', FPI=',FP,
     &        ''
              IF(LNG.EQ.2) WRITE(LU,11), '  BOUNDARY WAVE CONDIT:',
     &        ' HM0=',HM,', DIRN=',THETA,', FPI=',FP,
     &        ''
11          FORMAT(A30,A,F5.2,A,F6.1,A,F6.3)     
            ENDIF
!
          ELSE
            AT1=AT2
            HM1=HM2
            FP1=FP2
            THETA1=THETA2
            READ(WAC_FILES(WACFO1)%LU,*,ERR=100,END=200) AT2,HM2,FP2,THETA2
            GO TO 10
          ENDIF

I believe that the problem lies in this test of my limwac coding that in works nice if the computation begins at 0:
          IF(AT.EQ.0) THEN
If I continue a computation, then AT is greater than 0, and the test fails. Is there a 'clean' way to tell limwac to read the closest entry to the current AT, or should a write a successive loop from the beginning?

Costas
The administrator has disabled public write access.

Continued computation error with LIMWAC 10 years 8 months ago #12429

  • jmhervouet
  • jmhervouet's Avatar
Hello,

Hum, actually it is not so clear and there is no bug in rescue. Variable 5 is the free surface and 6 the bottom, so according to subroutine rescue, the free surface is missing in the file (test on trouve(5)) and the depth (test on trouve(4)) is missing, so the depth cannot be computed. The bottom will be found in the geometry file anyway. So there is indeed something fishy in your previous computation file on hydrodynamic file (or some French English mismatch).

Regards,

JMH
The administrator has disabled public write access.

Continued computation error with LIMWAC 10 years 8 months ago #12432

  • cyamin
  • cyamin's Avatar
  • OFFLINE
  • openTELEMAC Guru
  • Posts: 997
  • Thank you received: 234
The problem seems to be with sisyphe. I believe it is because I have set in the cas file the parameter:

OPTION FOR THE TREATMENT OF NON ERODABLE BEDS =3

although in the previous run, I have not specified a non-erodible level with noerod.f at all and therefore did not care to specify the erodible bed as a graphic output.

When the previous result does not include the erodible level as output, while sisyphe expects it, this error occurs.

Costas
The administrator has disabled public write access.

Continued computation error with LIMWAC 10 years 8 months ago #12433

  • cyamin
  • cyamin's Avatar
  • OFFLINE
  • openTELEMAC Guru
  • Posts: 997
  • Thank you received: 234
cyamin wrote:
The problem seems to be with sisyphe. I believe it is because I have set in the cas file the parameter:

OPTION FOR THE TREATMENT OF NON ERODABLE BEDS =3

although in the previous run, I have not specified a non-erodible level with noerod.f at all and therefore did not care to specify the erodible bed as a graphic output.

When the previous result does not include the erodible level as output, while sisyphe expects it, this error occurs.

Costas

I hate to prove me wrong, but unfortunately, it was the missing 'Water depth' (variable H) from Sisyphe's previous results file that was causing the trouble, not the erodible depth. Maybe now it becomes clear to you.

Costas
The administrator has disabled public write access.

Continued computation error with LIMWAC 10 years 8 months ago #12422

  • cyamin
  • cyamin's Avatar
  • OFFLINE
  • openTELEMAC Guru
  • Posts: 997
  • Thank you received: 234
I have found this entry in the Tomawac future version 7, which sounds relevant to my problem:
Tomawac-2D future version 7.0Edit

Estimated release date: end 2014

Lastest article update: 24/12/2013

New options and new keywords - Differences with version 6.3
Main new features of this version 7.0
none so far
New or modified key-words
"INITIAL TIME SET TO ZERO"

(REMISE A ZERO DU TEMPS)

Will set the starting time to 0. It may sort out problems when computation continued and coupling are combined.

Suppressed key-words

none so far
Can somebody verify that my problem and this are related? Is there a solution or should I abort trying to continue coupled computations?

Regards,
Costas
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Moderators: tfouquet

The open TELEMAC-MASCARET template for Joomla!2.5, the HTML 4 version.