This subroutine stores the reference profile at uand v points for the variable whose address is given by u_ptr and v_ptr.
750 character(len=*),
intent(in) :: filename_u
751 character(len=*),
intent(in) :: fieldname_u
752 character(len=*),
intent(in) :: filename_v
753 character(len=*),
intent(in) :: fieldname_v
754 type(time_type),
intent(in) :: Time
755 type(ocean_grid_type),
intent(inout) :: G
756 type(unit_scale_type),
intent(in) :: US
757 type(ALE_sponge_CS),
pointer :: CS
758 real,
dimension(SZIB_(G),SZJ_(G),SZK_(G)),
target,
intent(in) :: u_ptr
759 real,
dimension(SZI_(G),SZJB_(G),SZK_(G)),
target,
intent(in) :: v_ptr
761 real,
allocatable,
dimension(:,:,:) :: u_val
762 real,
allocatable,
dimension(:,:,:) :: mask_u
763 real,
allocatable,
dimension(:,:,:) :: v_val
764 real,
allocatable,
dimension(:,:,:) :: mask_v
766 real,
allocatable,
dimension(:),
target :: z_in, z_edges_in
767 real :: missing_value
770 integer :: isd, ied, jsd, jed
771 integer :: isdB, iedB, jsdB, jedB
772 integer,
dimension(4) :: fld_sz
773 character(len=256) :: mesg
775 if (.not.
associated(cs))
return
777 isd = g%isd; ied = g%ied; jsd = g%jsd; jed = g%jed
778 isdb = g%isdB; iedb = g%iedB; jsdb = g%jsdB; jedb = g%jedB
784 cs%Ref_val_u%id = init_external_field(filename_u, fieldname_u)
786 fld_sz = get_external_field_size(cs%Ref_val_u%id)
787 cs%Ref_val_u%nz_data = fld_sz(3)
788 cs%Ref_val_u%num_tlevs = fld_sz(4)
790 cs%Ref_val_v%id = init_external_field(filename_v, fieldname_v)
792 fld_sz = get_external_field_size(cs%Ref_val_v%id)
793 cs%Ref_val_v%nz_data = fld_sz(3)
794 cs%Ref_val_v%num_tlevs = fld_sz(4)
796 allocate( u_val(isdb:iedb,jsd:jed, fld_sz(3)) )
797 allocate( mask_u(isdb:iedb,jsd:jed, fld_sz(3)) )
798 allocate( v_val(isd:ied,jsdb:jedb, fld_sz(3)) )
799 allocate( mask_v(isd:ied,jsdb:jedb, fld_sz(3)) )
806 call horiz_interp_and_extrap_tracer(cs%Ref_val_u%id,time, 1.0,g,u_val,mask_u,z_in,z_edges_in,&
807 missing_value,.true.,.false.,.false., m_to_z=us%m_to_Z)
816 call horiz_interp_and_extrap_tracer(cs%Ref_val_v%id,time, 1.0,g,v_val,mask_v,z_in,z_edges_in, &
817 missing_value,.true.,.false.,.false., m_to_z=us%m_to_Z)
820 allocate(cs%Ref_val_u%p(fld_sz(3),cs%num_col_u))
821 cs%Ref_val_u%p(:,:) = 0.0
822 do col=1,cs%num_col_u
824 cs%Ref_val_u%p(k,col) = u_val(cs%col_i_u(col),cs%col_j_u(col),k)
830 allocate(cs%Ref_val_v%p(fld_sz(3),cs%num_col_v))
831 cs%Ref_val_v%p(:,:) = 0.0
832 do col=1,cs%num_col_v
834 cs%Ref_val_v%p(k,col) = v_val(cs%col_i_v(col),cs%col_j_v(col),k)