80 likes | 216 Views
Circulación General 2009 Clase 06/11. Cómo utilizar el modo “restart” del modelo FMS Shallow Water. ¿Para qué usar el modo “restart”?: 1.- para continuar una simulación que fue interrumpida por algún motivo;
E N D
Circulación General 2009Clase 06/11 Cómo utilizar el modo “restart” del modelo FMS Shallow Water
¿Para qué usar el modo “restart”?: 1.- para continuar una simulación que fue interrumpida por algún motivo; 2.- para diseñar un experimento en el cual el forzante cambia en un cierto paso de integración; Nosotros lo vamos a usar en el sentido del ítem 2, para agregar perturbaciones a los estados básicos de algunas de las prácticas.
¿ Cómo diseñar los experimentos ? 1.- Modificar el archivo namelists y la subrutina shallow_physics.f90 para que coincidan con las del experimento original. 2.- Agregar las modificaciones adecuadas para incorporar la nueva perturbación. 3.- Fijar la duración del experimento y el paso temporal en el script fms_runscript_restart
Una vez que se cumplieron esos pasos: >./fms_runscript_restart jet_ufr Se generará un directorio provisorio con el nombre: workdir_jet_ufr que, al terminar la simulación, se convertirá nuevamente en el directorio jet_ufr, conteniendo las salidas: shallow0.nc --> el resultado de la simulación anterior shallow1.nc --> el resultado de la nueva simulación
¡ADVERTENCIAS!: * generen copias de los tres experimentos de la práctica anterior porque en cada simulación se sobreescribe la carpeta RESTART * Como el modelo les genera el directorio temporario con este formato: workdir_jet_ufr pueden hacer varias simulaciones en simultáneo, partiendo de estados básicos diferentes. ¡OJO! deben esperar a que la primera simulación haya iniciado, luego borrar los archivos *.o y *.x del directorio exec.pentium, y recién ahí iniciar la nueva simulación.
¿ Cómo incluir una perturbación adicional, no descripta en el namelists ? : La perturbación se incorpora directamente en la subrutina shallow_physics.f90 subroutine shallow_physics_init(Phys) type(phys_type), intent(inout) :: Phys integer :: i, j, unit, ierr, io real :: xx, yy, dd, yyn, ddn, yys, dds, k0, dd1, j_amp, j_width, jet_lat real :: v_amp real :: xx2, yy2, dd2, h_amp2, h_lon2, h_lat2, h_width2 (...)
! perturbación adicional h_amp2 = 5.e04 h_lat2 = -28 h_lon2 = 220 h_width2 = 10 do j = js, je do i = is, ie xx = (deg_lon(i) - h_lon)/(h_width*2.0) yy = (deg_lat(j) - h_lat)/h_width dd = xx*xx + yy*yy xx2 = (deg_lon(i) - h_lon2)/(h_width2*1.0) yy2 = (deg_lat(j) - h_lat2)/h_width2 dd2 = xx2*xx2 + yy2*yy2 h_eq(i,j) = h_0 + h_amp*max(1.e-10, exp(-dd)) + h_amp2*max(1.e-10, exp(-dd2)) end do end do
do j = js, je yy = deg_lat(j)/itcz_width dd = yy*yy h_eq(:,j) = h_eq(:,j) + h_itcz*exp(-dd) end do