libsim Versione 7.2.1
|
◆ qcsummaryflagd()
Check data validity based on multiple confidences. Compute final decision boolean flag Quality control is complete if one of 3 conditions is verified: a) invalidated data b) gross error check failed c) tot variable less -1 Controllo di validita' del dato basato su test multipli. Per il calcolo della validita' del dato (flag booleano B33007), si prendono in considerazione 3 test; il dato risulta invalidato (flag booleano posto a false) se e solo se uno dei test risulta soddisfatto: a) il dato e' stato invalidato a mano (flag0=B33196=0) b) il dato non ha passato il gross erro check (flag1=B33192=0) c) la variabile tot risulta minore a -1 La variabile tot e' il risultato del confronto tra controllo climatologico (flag1, B33192), controllo temporale (flag2, B33193) e controllo spaziale (flag3, B33194). Ad ognuno di tali controlli e' stato attribuito un punteggio a seconda che ciascuno dei valori relativi ai flag di qualita' risulti inferiore od uguale-maggiore di 10. Nel dettaglio: se B33192 < 10 tot=-1; se B33192>=10 tot=0 se B33193 < 10 tot=-1; se B33193>=10 tot=1 se B33194 < 10 tot=-1; se B33194>=10 tot=1 Ogni dato e' controllato nei 3 flag di qualita' presenti, e viene valutata la somma risultante di tot. Se tot risulta inferiore a -1, qcsummaryflag e' posto a false ed il dato e' invalitato (B33007=0). Se tot risulta maggiore od uguale a -1 qcsummaryflag e' true ed il dato e' valido. Definizione alla linea 746 del file modqc.F90. 747
748 allocate(anaind(nana))
749
750 j=0
751 do i=1,size(this%ana)
752 if (llana(i)) then
753 j=j+1
754 anaind(j)=i
755 end if
756 end do
757
758
759 if(present(data_id)) then
760 allocate(data_idtmp(nana,size(data_id,2),size(data_id,3),size(data_id,4),size(data_id,5)))
761 data_idtmp=data_id(anaind,:,:,:,:)
762 if (associated(data_id))deallocate(data_id)
763 data_id=>data_idtmp
764 end if
765
766 call vol7d_reform(this,miss=miss,lana=llana)
767
768 deallocate(llana,anaind)
769
770else
771
772 call vol7d_reform(this,miss=miss)
773
774end if
775
776end subroutine qc_reform
777
778
779SUBROUTINE keep_var(var)
780TYPE(vol7d_var),intent(inout),POINTER :: var(:)
781
782INTEGER :: i
783
784IF (ASSOCIATED(var)) THEN
785 if (size(var) == 0) then
786 var%btable = vol7d_var_miss%btable
787 else
788 DO i = 1, SIZE(var)
789 IF (all(var(i)%btable /= keep_attr(:))) THEN ! n.b. ALL((//)) = .TRUE.
790 var(i)%btable = vol7d_var_miss%btable
791 ENDIF
|