| 393 | === Adapt TOP for RK3 |
| 394 | |
| 395 | === Merge with trunk r15557 |
| 396 | |
| 397 | Trunk has new management of the halos, RK3 additionnal routines have to be updated accordingly. [[BR]] |
| 398 | |
| 399 | - lbc_lnk_multi routines no longer exist : they have been integrated into lbc_lnk generic routines, then they have to be replaced in :[[BR]] |
| 400 | |
| 401 | => src/OCE/DYN/dynspg_ts.F90[[BR]] |
| 402 | => src/OCE/stprk3_stg.F90[[BR]] |
| 403 | |
| 404 | - loop have changed and optimized for limiting communications : when relevant RK3 routines will mimic MLF ones[[BR]] |
| 405 | |
| 406 | => src/OCE/DYN/divhor.F90 : div_hor_RK3 [[BR]] |
| 407 | => src/OCE/DYN/sshwzv.F90 : wzv_RK3 [[BR]] |
| 408 | => src/OCE/TRA/trasbc.F90 : tra_sbc_RK3 [[BR]] |
| 409 | |
| 410 | |
| 411 | - we have optimized tra_qsr routine by limiting intermidiate storing array, computations are now done only in the interior it works for all variables except fraqsr_1lev. Indeed it needs to be defined over the whole domain for the ICE. When not np_BIO fraqsr_1lev depends on qsr_hc, to minimize the code changed I decided to keep qsr_hc defined in the interior and to make a communication on fraqsr_1lev but it may not be the best solution. see with GM ! [[BR]] |
| 412 | |
| 413 | => src/OCE/TRA/traqsr.F90 (fraqsr_1lev) [[BR]] |
| 414 | |
| 415 | |
| 416 | - src/OCE/stprk3_stg.F90 also has to be updated. [[BR]] |
| 417 | |
| 418 | => A communication is required on r3. Indeed r3. at Kbb and Kmm can be used over the whole domain. In MLF case r3. at Kbb and Kmm are lbc-ised when starting a time step, while in RK3 case because of the stages within a step and r3. at Kmm is never lbc-ised. That is why this communication is required ! [[BR]] |
| 419 | => Advective speeds at Kmm are computed on the whole domain and also required r3u to be defined over the whole domain. [[BR]] |
| 420 | => As far as I understand ts, tr @ Kaa are not only computed in the interior in order to limit the number of loops, and sometime (ex pt update in src/OCE/TRA/traadv_fct.F90) values are computed but not used. In traadv case pt value outside the interior in erased with a lbc_lnk at the end of the time step. That is why ts/tr have to be initialised over the whole domain. Maybe it should be done at the init only as we discussed with GM ! [[BR]] |
| 421 | => As what has been done for MLF "IF( nn_hls == 2 .AND. l_zdfsh2 ) CALL lbc_lnk( 'stp_RK3_stg', avm_k, 'W', 1.0_wp )" needs to be externalised from the tke routine. [[BR]] |
| 422 | |
| 423 | |
| 424 | - rhop removal needs to be adressed properly. For now it has been quickly removed from RK3 but it is required for some DIA routines and over all for tra_mle (activated in ORCA2_ICE_PISCES configuration). The initial target was to compute rhop locally when needed on order to avoid to store a useless rhop array. But is means about 6 times. [[BR]] |
| 425 | |
| 426 | => src/OCE/TRD/trdglo.F90 : glo_dyn_wri changes maye useless since glo_dyn_wri never called ! [[BR]] |
| 427 | => src/OCE/stprk3.F90 rhop@Nbb now computed with rhd at each time step [[BR]] |
| 428 | => src/OCE/IOM/restart.F90 : remove rhop from restart [[BR]] |
| 429 | |
| 430 | - initialisation with restart sometimes requires Kmm field with are not intialised in RK3, as a matter of simplicity we just copy Kbb into Kmm for ssh, ts, uu, vv fields. [[BR]] |
| 431 | |
| 432 | => src/OCE/IOM/restart.F90 : rst_read [[BR]] |
| 433 | => src/OCE/IOM/restart.F90 : rst_read_ssh [[BR]] |
| 434 | |
| 435 | |
| 436 | |
| 437 | |